[原创]nginx通过upstream实现反向代理方式和proxy_pass简单说明 – 21运维
通知: .-...

[原创]nginx通过upstream实现反向代理方式和proxy_pass简单说明

nginx 21运维 10296浏览 0评论

     通过之前的文章《Nginx模块upstream_module详细介绍以及调度算法》简单阐述了一个nginx如果通过upstream实现负载均衡。操作比较简单, 但其中个别重要参数介绍不完整。这里补充一下proxy_pass。
       该代理方式的运行原理是前端访问的时候,请求到哪个主机,执行到后边定义的proxy_pass,就会按照我们定义的upstream 名称执行对应的标签,比如《Linux环境下Nginx 通过upstream如何配置负载均衡以及实现》定义的web_pools这个web池,当然也可以是一个url地址,然后按照upstream定义的服务器以及设置好的算法进行分发执行。
本文简单补充下proxy_pass参数(proxy_pass指令属于ngx_http_proxy_module模块,关于更多ngx_http_proxy_module后边将做详细笔记):
proxy_pass http://web_pools;  用于指定反向代理服务器的服务器池。
proxy_set_header  Host  $host;  作用web服务器上有多个站点时,用该参数header来区分反向代理哪个域名。比如下边的代码举例。
proxy_set_header X-Forwarded-For  $remote_addr; 作用是后端服务器上的程序获取访客真实IP,从该header头获取。部分程序需要该功能。

一般我们会在location标签中调用include proxy.conf,内容基本如下,参数可以根据实际环境进行修改:

proxy_redirect off ;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 50m;
client_body_buffer_size 2m;
proxy_connect_timeout 6000;
proxy_send_timeout 6000;
proxy_read_timeout 6000;
proxy_buffer_size 256k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
#proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
#proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host

 

针对proxy_set_header  Host  $host;作用代码举例如下:
nginx配置文件:

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;


    upstream web_pools {
      server 192.168.1.102:80      weight=5  max_fails=3 fail_timeout=3;
      server 192.168.1.103:80      weight=1  max_fails=3 fail_timeout=3;
      server 192.168.1.104:80      backup;
    }

    server {
        listen       80;
        server_name  nginx.21yunwei.com;
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://web_pools;
            proxy_set_header  Host  $host;
        }
    }
}

其中一个web节点httpd.conf站点配置如下:

    ServerAdmin [email protected]
    DocumentRoot /var/www/bbs
    ServerName nginx.21yunwei.com
    ErrorLog  logs/bbs-error_log
    CustomLog logs/bbs-access_log common


    ServerAdmin [email protected]
    DocumentRoot /var/www/blog
    ServerName blog.21yunwei.com
    ErrorLog  logs/blog-error_log
    CustomLog logs/blog-access_log common


我们访问nginx.21yunwei.com 可以得到测试站点内容,访问blog.21yunwei.com也可以得到blog对应内容。这样就避免了只访问第一个站点的情况。

转载请注明:21运维 » [原创]nginx通过upstream实现反向代理方式和proxy_pass简单说明

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址