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。
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 [email protected]:/www/docs
5、分别请求测试网页,看看能否正常访问。
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等待后端服务器的响应时间,