Nginx服务器的代理服务
正向代理与反向代理的概念
代理服务,通常也称正向代理服务,由客户端到正向代理服务器再到相应的站点。举个例子,局域网内的机器借助代理服务器访问局域网外的网站,主要是为了增强局域网内部网络的安全性,起到了一部分防火墙的功能;代理服务器也可以对局域网对外网的访问进行必要的监控和管理。正向代理服务器不支持外部对内部网络的访问。
反向代理服务,其功能在逻辑上与正向代理服务恰好是相反的,是由外到内的。
总的来说,正向代理服务器用来让局域网客户机接入外网以访问外网资源,反向代理服务器用来让外网的客户端接入局域网中的站点访问站点中的资源。
服务器的正向代理服务
服务器正向代理服务的配置的三个指令
- resolver指令
该指令用于指定DNS服务器的IP地址。
resolver address ... [valid=time];
address:DNS服务器的IP地址,默认为53端口
time:设置数据包在网络中的有效时间。若在规定时间没有送达数据包,发送者会得到一个消息,决定是否要重发数据包。
- resolver_timeout指令
该指令用于设置DNS服务器域名解析超时时间
resolver_timeout time;
- proxy_pass指令
该指令用于设置代理服务器的协议和地址
proxy_pass URL;
在代理服务器中,其配置为:
proxy_pass http://$http_host$request_uri;
代理服务器协议设置为HTTP,$http_host $request_uri是Nginx服务器支持的用于自动获得主机和URI的变量。
Nginx服务器正向代理服务的使用
server
{
resolver 8.8.8.8;
listen 82;
location /
{
proxy_pass http://$http_host$request_uri;
}
}
设置DNS服务器地址为8.8.8.8,使用默认的52端口作为DNS服务器的服务端口,代理服务的监听端口设置为82端口,Nginx服务器接收到的所有请求有第五行的location块来过滤。
注意在代理服务器中server块中不能出现server_name;
Nginx服务器的反向代理服务
反向代理服务器同时接受的客户端连接为worker_processes*worker_connections / 4;
配置的指令主要由ngx_http_proxy_module来解析和处理。
- proxy_pass指令
该指令用来设置被代理的服务器的地址,可以是主机名、IP地址加端口号等等。
proxy_pass URL;
来个例子:
在这里插入代码片
upstream proxy_svrs
{
server http://192.168.1.1:8001/uri/;
server http://192.168.1.2:8001/uri/;
server http://192.168.1.3:8001/uri/;
}
server
{
...
listen 80;
server_name www.myweb.name;
location /
{
proxy_pass proxy_svrs;
}
}
URL配置中若使用URI,服务器将会用新的URI替代原来的URI。若不包含URI,服务器不会改变原来的地址。