一.正向代理
1.概念
正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。正向代理是访问外部网络。比如国内访问不到的网址,通过代理访问。
2.指令
指令语法 | 说明 |
resolver address … [valid =time] | 该指令用于指定DNS服务器的IP地址,DNS服务器的主要功能解析域名,将域名解析为IP地址。 address: 表示 DNS服务器的IP地址,如果不指定端口,默认是35 time: 设置数据包在网络中的有效时间 |
resolver_timeout time | 该指令用于设置DNS服务器域名解析超时的时间 |
proxy_pass URL | 这个指令用来设置代理服务器的协议和地址,这个不仅仅用于Nginx服务器的代理服务,更主要的是应用于反向代理服务器 URL即为设置的代理服务器的协议和地址 |
3.正向代理例子
...
server {
resolver 8.8.8.8; #设置的DNS服务器为8.8.8.8,使用默认端口53
listen 82; #代理服务监听的端口是82
location / {
proxy_pass http://$http_host$request_uri; #这里是代理服务器地址,$http_host$request_uri这两个是Nginx配置自动获取的主机和URI的变量,一般配置不要改变该指令的配置,意思就是这一行就是写死的。
}
}
注意点:正向代理不支持代理https站点,这里不能使用server_name指令,并且必须使用resolver指令,用来处理解析接收到的域名。
二、反向代理
1.概念
反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上(客户端)的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
2.反向代理基本设置的21个指令
指令语法 | 说明 |
proxy_pass URL | 设置被代理服务器的地址,URL可以主机名,IP加端口号的形式,传输协议通常是"http"、“https://”,URL也可以是upstream设置的一组服务器。 注意的是如果upstream组中的服务器没有使用“http://”或者“https://”那么 proxy_pass就需要添加这个协议。 注意点一:https/http的写法 upstream proxy_sers { server 192.168.123.1/uri; server 192.168.123.2/uri; server 192.168.123.3/uri; } server{ listen 80; server_name www.form1.cn; location / { proxy_pass http://proxy_sers; #server中指明 http:// 在proxy_pass就不需要指定,这里写了,那么upstream里面就不需要了 } } 注意点二: 被代理的网址是否包含URI,如果没有包含就不会改变原来的URI,否则就会用新的URI代替原来的URI server{ listen 80; server_name www.myweb.com; location /server/ { proxy_pass http://123.11.11.1; # 这里网址没有使用URI,所以访问www.myweb.com/server/的时候,会代理到 http://123.11.11.1/server/。 如果这里时候使用的是proxy_pass http://123.11.11.1/user/ 那么当同样访问的原来这个网址的时候,就直接会替换掉原来的URI(/server/),代理到 http://123.11.11.1/user/ 上去 } } |