1. nginx安装
- 安装依赖工具
yum install yum-utils
- 新建nginx的yum源
新建yum源文件 /etc/yum.repos.d/nginx.repo
,在文件中填写如下信息。
vi /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
- 使用yum安装nginx
yum install nginx
- 使用systemctl控制nginx
# 启动
systemctl start nginx
# 状态查询
systemctl status nginx
# 重启
systemctl restart nginx
- 每次更新配置文件以后,重启前务必先测试配置文件是否有问题
nginx -t
2. nginx常见的负载均衡算法
- 轮询
每个请求按时间顺序逐一分配到不同的后端服务器。这也是nginx默认的负载均衡算法。
- 加权轮询
给后端服务器增加权重,在轮询的时候,如果权重高就更容易被分配
- ip hash
每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。
- url hash
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。后台服务器为缓存的时候效率。
- least_conn
最少连接数策略,nginx将请求优先分配给连接数少的服务器。
- 智能fair策略
这是比上面几个更加智能的负载均衡算法。此种算法可以依据页面大小
和加载时间长短
智能地进行负载均衡,也就是根据后端服务器的响应时间
来分配请求,响应时间短的优先分配。Nginx本身是不支持 fair的,如果需要使用这种调度算法,必须下载Nginx的 upstream_fair
模块。
3. 反向代理配置
配置说明:
在本地部署了两个服务,端口分别为8081和8082
使用nginx反向代理,外界访问本机IP:8080
,nginx自动将其转发到8081和8082
本案例中使用yum安装的nginx,其配置文件位于
/etc/nginx/nginx.conf
。我们通过观察发现,该默认配置文件自动引入了同路径下的conf.d
文件夹下所有以.conf结尾的文件加入配置文件。所以我们在/etc/nginx/conf.d目录下新建测试配置文件 demo.conf ,并在这个配置文件中编写反向代理配置。
配置
server {
listen 8080;
server_name localhost;
location /{
proxy_pass http://demo-servers ; # 代理
proxy_set_header HOST $host; # 不改变源请求头的值
proxy_pass_request_body on; #开启获取请求体
proxy_pass_request_headers on; #开启获取请求头
proxy_set_header X-Real-IP $remote_addr; # 记录真实发出请求的客户端IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #记录代理信息
}
}
upstream demo-servers{
server localhost:8081;
server localhost:8082;
}
4. 访问502错误
使用CentOS7访问nginx反向代理的端口时,容易出现502错误。这是因为nginx的请求被SELinux安全组件拦截。所以我们需要关闭或放行
开启HTTP访问
setsebool -P httpd_can_network_connect 1
或 临时关闭SELinux
setenforce 0
或 直接修改下面的文件,永久关闭SELinux。修改后需要重启系统
/etc/sysconfig/selinux
修改selinux的配置文件,主要是修改
SELINX=XXX
选项。大概提供了三种配置
- SELINX=disable #关闭
- SELINX=enforcing #默认配置,强制模式,所有违反安全策略的行为都将被禁止。
- SELINX=permissive #宽容模式,所有违反安全策略的行为不被禁止,但是会在日志中作记录。
Comments NOTHING