博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈什么是正向代理和反向代理,如何使用nginx搭建正向代理和反向代理
阅读量:5840 次
发布时间:2019-06-18

本文共 2334 字,大约阅读时间需要 7 分钟。

原文:https://mengkang.net/78.html

1.正向代理的概念

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

2.反向代理的概念

反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。

简单的区别方法:正向代理就是我们在浏览器可以设置的代理服务器,主动权在浏览者手里。比如我们有时候要查阅一些资料,被国内墙掉了,这时候我可以在国外的服务器上搭建一个nginx正向代理服务器,然后我们就可以通过浏览器设置代理服务器,来FQ了。反向代理,是浏览者不知情的,服务器端自己假设的。

更加细致的分析:

下面以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 变量组成。 

proxy_pass $scheme://$host$request_uri;  

proxy_set_header Host $http_host;  

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

proxy_buffers 256 4k;  

proxy_max_temp_file_size 0;  

proxy_connect_timeout 30;  

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

proxy_cache_valid 200 302 10m;  

proxy_cache_valid 301 1h;  

proxy_cache_valid any 1m; 

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

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

反向代理参考地址:

 (更加清晰点)

这里我更加简洁的小结下,需要看完整版的,建议点击上面的链接。

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

  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

  1. server {
  2. listen 80;
  3. server_name test.zhoumengkang.com;
  4. location / {
  5. proxy_pass http://121.199.**.*:80;
  6. }
  7. }

转载于:https://www.cnblogs.com/Starshot/p/6945454.html

你可能感兴趣的文章
Windows XP倒计时到底意味着什么?
查看>>
运维工程师在干什么学些什么?【致菜鸟】
查看>>
Linux中iptables详解
查看>>
java中回调函数以及关于包装类的Demo
查看>>
maven异常:missing artifact jdk.tools:jar:1.6
查看>>
终端安全求生指南(五)-——日志管理
查看>>
Nginx 使用 openssl 的自签名证书
查看>>
创业维艰、守成不易
查看>>
PHP环境安装套件:快速安装LAMP环境
查看>>
CSS3
查看>>
ul下的li浮动,如何是ul有li的高度
查看>>
C++ primer plus
查看>>
python mysqlDB
查看>>
UVALive 3942 Remember the Word Tire+DP
查看>>
从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~目录...
查看>>
被需求搞的一塌糊涂,怎么办?
查看>>
c_数据结构_队的实现
查看>>
jquery 选择器总结
查看>>
Qt设置背景图片
查看>>
【阿里云文档】常用文档整理
查看>>