Nginx之十 代理服务

一.正向代理

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/ 上去
 }
}

指令可以参考 https://www.form1.cn/linux-nginx-37.html

猜你喜欢

转载自blog.csdn.net/weixin_40792878/article/details/83350392
今日推荐