Nginx安装比较简单,下面重点说一下关于反向代理功能的一些配置。
html
upstream 指令必须放在 http的上下文当中,建立一个RealServer的服务器池,并给这个服务器池取一个名字,以便后面引用该服务器池。nginx
那么引用方式主要有这几个,fastcgi_pass, proxy_pass, memcached_pass,uwsgi_pass 等。web
这里,咱们先说一下proxy_pass 这个指令的用法:后端
一、proxy_pass URL 后面跟上一个URL,这个指令能够放在 location,if in location 中,好比下面的用法:服务器
upstream web_poolide
{memcached
server 192.168.1.8;测试
server 192.168.1.9;网站
}spa
---------------
location / {
root html;
index index.html index.htm;
proxy_pass http://web_pool;
}
location /name/ {
proxy_pass http://192.168.1.9/index.html ;
}
二、下面关注一下 http_proxy模块的参数:
Nginx的代理功能是经过http_proxy模块来实现的,默认在安装nginx的时候,已经安装了该模块,来看一下每一个选项表明什么意思:
proxy_set_header 设置由后端服务器获取用户的主机名或者真实的IP地址,以及代理者的真实IP地址;
须要作一个实验,来明白这个原理。
请看实验过程,分别在每台后端服务器创建两个虚拟主机。
一、这里为了演示,使用的是经过yum 安装的httpd。
二、分别建立对应的网站根目录
mkdir -pv /www/docs/{bbs,www}
三、创建网页索引文件
echo "www" > /www/docs/www/index.html && echo "bbs" > /www/docs/bbs/index.html
四、在后端服务器中使用上述相同步骤操做,并同步网站数据至其余后端服务器中。
scp -pr /www/docs root@192.168.1.X:/www/docs
五、分别请求测试网页,看看可否正常访问。
六、由nginx经过反向代理的方式,来访问后端服务器;
首先来看一下语法
Syntax: proxy_set_header field value;
默认设置: proxy_set_header Host $proxy_host; 指的是反向代理nginx的IP地址,不是来自客户端的域名
Context:http, server, location 上下文标签中
七、为了保证,可以未来自客户端的请求正确的转发到正确的虚拟主机上,须要在location标签中,增长下面的设置。
proxy_set_header Host $host;
client_body_buffer_size 用于指定客户端请求主体缓冲区大小,能够理解为先保存到本地而后再传给客户;
proxy_connect_timeout 表示与后端服务器链接的超时时间,即发起握手等候响应的超时时间;
proxy_send_timeout 表示后端服务器的数据回传时间,即在规定时间以内后端服务器必须传完全部的数据,不然,nginx则断开这个链接;
proxy_read_timeout 设置nginx从代理的后端服务器获取信息的时间,表示链接创建成功后,nginx等待后端服务器的响应时间,