1. 正向代理与反向代理的概念:
请参见之前的一片文章《Nginx基本功能及其原理》,理解什么是正向代理和反向代理服务。
理解这两个概念的关键是要明白我们要让服务器充当的角色和目的是什么?
- 在正向代理服务器中,充当的角色是客户端(科学上网软件服务器充当的其实就是正向代理),目的是访问外网的资源
- 在反向代理服务器中,充当的角色是站点,目的是把站点的资源发布出去让其他客户端能够访问
2. nginx服务器正向代理服务
使用Nginx服务器代理服务功能的情况相对反向代理要少一些,涉及的主要指令不多,一般在搭建nginx正向代理时单独配置一个server块来进行配置。
2.1 resolver指令:
该指令指定DNS服务器的IP地址。DNS服务器的主要功能是进行域名解析,将域名映射为对应的IP地址。语法结构:
resolver address ...[valid=time];
- address,DNS服务器的IP地址。如果不指定端口,默认使用53;
- time,设置数据包在网络中的有效时间。
使用该指令的一个例子如下:
resolver 127.0.0.1 [::1]:5353 valid=30s;
在实际应用中,一般不需要设置这么复杂,只要将DNS服务器的IP地址设置好即可。
2.2 resolver_timeout指令:
该指令用于设置DNS服务器域名解析的超时时间,语法结构:
resolver_timeout time;
2.3 proxy_pass指令:
该指令用于设置代理服务器的协议和地址,它不仅仅用于Nginx服务器的正向代理,更多的应用用于反向代理。语法结构:
proxy_pass URL;
- URL,要设置的正向代理服务器的协议和地址;
该指令的用法相对固定:
proxy_pass http://$http_host$request_uri;
其中,代理服务器的协议为HTTP,request_uri分别用于自动获取主机和URI。
3. Nginx做正向代理的例子
...
server {
# 设置DNS服务器IP地址为8.8.8.8,默认使用53端口
resolver 8.8.8.8;
# 代理服务监听82端口
listen 82;
# nginx接收的所有请求都由location块进行过滤处理
location / {
proxy_pass http://$http_host$request_uri;
}
}
...
注意:Nginx正向代理不支持HTTPS协议的站点。。。
网友评论