Nginx安装比较简单,下面重点说一下关于反向代理功能的一些配置。


upstream 指令必须放在 http的上下文当中,创建一个RealServer的服务器池,并给这个服务器池取一个名字,以便后面引用该服务器池。


那么引用方式主要有这几个,fastcgi_pass, proxy_pass, memcached_pass,uwsgi_pass 等。


这里,我们先说一下proxy_pass 这个指令的用法:


1、proxy_pass  URL  后面跟上一个URL,这个指令可以放在 location,if in location 中,比如下面的用法:


upstream web_pool
        {
                server 192.168.1.8;
             server 192.168.1.9;
        }
---------------
location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://web_pool;
        }
        location /name/ {
             proxy_pass http://192.168.1.9/index.html ;
        }


2、下面关注一下 http_proxy模块的参数:

Nginx的代理功能是通过http_proxy模块来实现的,默认在安装nginx的时候,已经安装了该模块,来看一下每个选项代表什么意思:

proxy_set_header  设置由后端服务器获取用户的主机名或者真实的IP地址,以及代理者的真实IP地址;

需要做一个实验,来明白这个原理。

请看实验过程,分别在每台后端服务器建立两个虚拟主机。

1、这里为了演示,使用的是通过yum 安装的httpd。

nginx 反向代理后 获取session为空_nginx

2、分别创建对应的网站根目录

mkdir  -pv  /www/docs/{bbs,www}

3、建立网页索引文件

echo "www" > /www/docs/www/index.html  && echo "bbs" > /www/docs/bbs/index.html

4、在后端服务器中使用上述相同步骤操作,并同步网站数据至其他后端服务器中。

scp -pr /www/docs  root@192.168.1.X:/www/docs

5、分别请求测试网页,看看能否正常访问。

nginx 反向代理后 获取session为空_运维_02

6、由nginx通过反向代理的方式,来访问后端服务器;

首先来看一下语法

     Syntax: proxy_set_header  field value;

     默认设置: proxy_set_header  Host $proxy_host;  指的是反向代理nginx的IP地址,不是来自客户端的域名

     Context:http, server, location  上下文标签中

7、为了保证,能够将来自客户端的请求正确的转发到正确的虚拟主机上,需要在location标签中,增加下面的设置。

     proxy_set_header  Host $host;


client_body_buffer_size  用于指定客户端请求主体缓冲区大小,可以理解为先保存到本地然后再传给客户;

proxy_connect_timeout   表示与后端服务器连接的超时时间,即发起握手等候响应的超时时间;

proxy_send_timeout   表示后端服务器的数据回传时间,即在规定时间之内后端服务器必须传完所有的数据,否则,nginx则断开这个连接;

proxy_read_timeout   设置nginx从代理的后端服务器获取信息的时间,表示连接建立成功后,nginx等待后端服务器的响应时间,



转载于:https://blog.51cto.com/python8384/1640024