nginx的正向代理和反向的区别及配置
admin
2023-03-16 13:21:03
0

1.正向代理的概念

正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。


2.反向代理的概念

反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
简单的区别方法:正向代理就是我们在浏览器可以设置的代理服务器,主动权在浏览者手里。比如我们有时候要查阅一些资料,被国内墙掉了,这时候我可以在国外的服务器上搭建一个nginx正向代理服务器,然后我们就可以通过浏览器设置代理服务器,来×××了。反向代理,是浏览者不知情的,服务器端自己假设的。

1.nginx正向代理配置


  1. server{  

  2.         resolver 8.8.8.8;  

  3.         resolver_timeout 30s;   

  4.         listen 82;  

  5.         location / {  

  6.                 proxy_pass http://$http_host$request_uri;  

  7.                 proxy_set_header Host $http_host;  

  8.                 proxy_buffers 256 4k;  

  9.                 proxy_max_temp_file_size 0;  

  10.                 proxy_connect_timeout 30;  

  11.                 proxy_cache_valid 200 302 10m;  

  12.                 proxy_cache_valid 301 1h;  

  13.                 proxy_cache_valid any 1m;  

  14.         }  

  15. }  

1、不能有hostname。 


2、必须有resolver, 即dns,即上面的8.8.8.8,超时时间(30秒)可选。 
3、配置正向代理参数,均是由 Nginx 变量组成。 

[plain] view plain copy

  1. proxy_pass $scheme://$host$request_uri;    

  2. proxy_set_header Host $http_host;    

4、配置缓存大小,关闭磁盘缓存读写减少I/O,以及代理连接超时时间。  

[plain] view plain copy

  1. proxy_buffers 256 4k;    

  2. proxy_max_temp_file_size 0;    

  3. proxy_connect_timeout 30;    

5、配置代理服务器 Http 状态缓存时间。  

[plain] view plain copy

  1. proxy_cache_valid 200 302 10m;    

  2. proxy_cache_valid 301 1h;    

  3. proxy_cache_valid any 1m;   

配置好后,重启nginx,以浏览器为例,要使用这个代理服务器,则只需将浏览器代理设置为http://+服务器ip地址+:+82(82是刚刚设置的端口号)即可使用了。


2.nginx反向代理服务器的配置

下面是以负载均衡为例子的反向代理。



[plain] view plain copy

  1. http {  

  2. #   省略了前面一般的配置,直接从负载均衡这里开始  

  3. #   设置地址池,后端3台服务器  

  4.     upstream http_server_pool {  

  5.         server 192.168.1.2:8080 weight=2 max_fails=2 fail_timeout=30s;  

  6.         server 192.168.1.3:8080 weight=3 max_fails=2 fail_timeout=30s;  

  7.         server 192.168.1.4:8080 weight=4 max_fails=2 fail_timeout=30s;  

  8.     }  

  9. #   一个虚拟主机,用来反向代理http_server_pool这组服务器  

  10.     server {  

  11.         listen       80;  

  12. #       外网访问的域名          

  13.         server_name  www.test.com;   

  14.         location / {  

  15. #           后端服务器返回500 503 404错误,自动请求转发到upstream池中另一台服务器  

  16.             proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;  

  17.             proxy_pass http://http_server_pool;  

  18.             proxy_set_header Host www.test.com;  

  19.             proxy_set_header X-Real-IP $remote_addr;  

  20.             proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;  

  21.         }  

  22.         access_log  logs/www.test.com.access.log  combined;  

  23.     }  

  24. }  


最简单的反向代理演示(在一台服务器上做代理服务器,将http请求转发到另一台IIS服务器上,通过二级域名形式访问。)编辑vim nginx.conf



[plain] view plain copy

  1. server {  

  2.     listen    80;  

  3.     server_name test.zhoumengkang.com;  

  4.     location / {  

  5.         proxy_pass http://121.199.**.*:80;  

  6.     }  

  7. }  

upstream 几种分配(调度,分派)示例

1、轮询(默认), 
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

upstream bakend {    server 192.168.0.14 weight=10;    server 192.168.0.15 weight=10;    server 192.168.0.16 down;    server 192.168.0.17 backup;
}123456

2、ip_hash, 
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

upstream bakend {
    ip_hash;
    server 192.168.0.14:88;    
    server 192.168.0.15:80;
}12345

3、fair(第三方), 
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream backend 
{    
server server1;    
server server2;
    fair;
}12345

4、url_hash(第三方) 
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 
  例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

upstream backend {
    server squid1:3128;
    server squid2:3128;    
    hash $request_uri;    
    hash_method crc32;
}123456


相关内容

热门资讯

普京:收到泽连斯基希望会晤的口... 俄罗斯总统普京当地时间5月9日晚召开记者会,回答相关提问。普京表示,此次红场阅兵未展示军事装备,并不...
将论文“写”在秦岭云端 5月7日,团队成员正在进行激光光谱分光测试实验。 “我们在太白山主峰架起自主研制的激光雷达,可以实时...
成都人工智能产业实力领跑西部,... 近日,工业和信息化部发布2025年先进计算赋能新质生产力典型应用案例名单,成都3家人工智能领域企业 ...
铭凡发布「智能体NAS」:第三... 如果说过去几年,NAS市场的关键词还是“私有云”“家庭存储”和“影音库”,那么现在的情况已经悄然发生...
药王更替GIP靶点锋芒毕露 博... 来源:滚动播报 (来源:北京商报) 过去两年,减重药赛道极速完成了路径更迭。以礼来替尔泊肽为代表的G...
无凸轮十二轴弹簧机选型指南:东... 导语:在弹簧制造领域,无凸轮十二轴弹簧机凭借高精度、高效率、高灵活性的优势,成为新能源、航天航空、精...
AI 隐藏“思维链”,是怕被人... OpenAI 这些年最不缺的,就是被放大的人。 Sam Altman 当然不用说,几乎已经成了这家公...
美媒:以色列在伊拉克沙漠秘密建... 据《华尔街日报》5月9日报道,知情人士透露,以色列在伊拉克沙漠地带建立了一个秘密军事据点,以支持其针...
特朗普:预计“很快”收到伊朗对... △美国总统特朗(资料图)当地时间5月9日,央视记者获悉,美国总统特朗普表示,他预计“很快”会收到伊朗...
伊朗拟对霍尔木兹海峡的海底电缆... 据伊朗法尔斯通讯社5月9日报道,伊朗为途经霍尔木兹海峡、承担互联网通信业务的海底光缆,提出了一套管理...