一、 简单介绍

  1. 说明
    1)功能说明
  • ngx_http_proxy_module
    反向代理模块把用户请求抛给服务器节点/池
  • ngx_http_upstream_module
    负载均衡模块,实现网站的负载均衡和节点健康检查

2)官方链接
负载均衡
反向代理

  1. 语法
    1)负载均衡
Syntax: upstream name { ... }
Context:    http

eg:

upstream oldboy {
   server 10.0.0.7:80;
   server 10.0.0.8:80;
   server 10.0.0.9:80;
}

说明:upstream模块就类似定一个一个地址池或者说定一个web服务器组
2)反向代理

Syntax: proxy_pass URL;
Context:    location, if in location, limit_except

eg:

location / {
   proxy_pass http://upload;
}

说明:proxy_pass主要用于进行抛送用户访问请求给upstream模块中的相应节点服务器

二、 安装配置

  1. yum安装
    yum install nginx
    #需要阿里的epel源
    egrep -v “#|^$” /etc/nginx/nginx.conf.default >/etc/nginx/nginx.conf

  2. 修改配置文件

    cat /etc/nginx/nginx.conf
    worker_processes  1;
    events {
     worker_connections  1024;
    }
    http {
     include       mime.types;
     default_type  application/octet-stream;
     sendfile        on;
     keepalive_timeout  65;
     upstream noah {
         server 10.0.0.7:80;
         server 10.0.0.8:80;
         server 10.0.0.9:80;
     }
     server {
         listen       80;
         server_name  localhost;
         root   html;
         index  index.html index.htm;
         location / {
           proxy_pass http://noah;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;
          }   
     }

    }
    upstream noah和location /部分,为增加的反向代理和负载均衡模块
    proxy_set_header选项的解释在最后面

  3. 启动nginx

    nginx -t
    /etc/init.d/nginx start
    三、 检测

  4. 利用浏览器进行测试

    进行hosts解析
    浏览以下网址http://www.etiantian.org/oldboy.html
    利用ctrl+F5强制刷新测试
    检查是否进行负载调度

  5. 利用curl命令进行测试

[root@xxx ~]# curl -H host:www.etiantian.org 10.0.0.5/oldboy.html
web01 www.etiantian.org
[root@xxx ~]# curl -H host:www.etiantian.org 10.0.0.5/oldboy.html
web02 www.etiantian.org
[root@xxx ~]# curl -H host:www.etiantian.org 10.0.0.5/oldboy.html
web03 www.etiantian.org

四、 proxy_set_header解释

proxy_set_header Host $host的作用:
将用户的请求头一起直接交给服务器,而不省略;在做负载均衡时要记得加此参数,否则可能可能导致以下问题:

  • 别名网址循环解析
  • 有多个server标签但却只能解析第一个标签的网址
  • http版本会由1.1变为1.0,apache会不提供访问

proxy_set_header X-Forwarded-For $remote_addr的作用:
将用户的ip传递给web服务器,以便web服务器日志记录用户IP而非代理IP,需要日志格式中定义了http_x_forwarded_for选项

文档更新时间: 2023-08-10 06:27   作者:月影鹏鹏
IT运维支持-AIWALY-月影工作室