1. nginx安装

  1. 安装依赖工具
yum install yum-utils
  1. 新建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
  1. 使用yum安装nginx
yum install nginx
  1. 使用systemctl控制nginx
# 启动
systemctl start nginx
# 状态查询
systemctl status nginx
# 重启
systemctl restart nginx
  1. 每次更新配置文件以后,重启前务必先测试配置文件是否有问题
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选项。大概提供了三种配置

  1. SELINX=disable #关闭
  2. SELINX=enforcing #默认配置,强制模式,所有违反安全策略的行为都将被禁止。
  3. SELINX=permissive #宽容模式,所有违反安全策略的行为不被禁止,但是会在日志中作记录。

SELINUX状态

如人饮水,冷暖自知。
最后更新于 2023-08-20