什么是正向代理和反向代理,如何使用nginx搭建正向代理和反向代理
2017-07-10 16:59
881 查看
1.正向代理的概念
正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
2.反向代理的概念
反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
简单的区别方法:正向代理就是我们在浏览器可以设置的代理服务器,主动权在浏览者手里。比如我们有时候要查阅一些资料,被国内墙掉了,这时候我可以在国外的服务器上搭建一个nginx正向代理服务器,然后我们就可以通过浏览器设置代理服务器,来翻墙了。反向代理,是浏览者不知情的,服务器端自己假设的。
更加细致的分析:http://z00w00.blog.51cto.com/515114/1031287
下面以nginx为例子来搭建正向代理服务器和反向代理服务器
1.nginx正向代理配置
1. server{
2. resolver
8.8.8.8;
3. resolver_timeout
30s;
4. listen
82;
5. location / {
6. proxy_passhttp://$http_host$request_uri;
7. proxy_set_header
Host $http_host;
8. proxy_buffers
2564k;
9. proxy_max_temp_file_size
0;
10. proxy_connect_timeout
30;
11. proxy_cache_valid
20030210m;
12. proxy_cache_valid
3011h;
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反向代理服务器的配置
反向代理参考地址:
http://liuyu.blog.51cto.com/183345/166381/
http://www.blogjava.net/xiaomage234/archive/2011/09/08/358247.html (更加清晰点)
http://blog.csdn.net/chanya/article/details/7745459
这里我更加简洁的小结下,需要看完整版的,建议点击上面的链接。
下面是以负载均衡为例子的反向代理。
1. http {
2. #
省略了前面一般的配置,直接从负载均衡这里开始
3. #
设置地址池,后端3台服务器
4. upstreamhttp_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 timeoutinvalid_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_nametest.zhoumengkang.com;
4. location/ {
5. proxy_pass http://121.199.**.*:80; 6. }
7. }
正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
2.反向代理的概念
反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
简单的区别方法:正向代理就是我们在浏览器可以设置的代理服务器,主动权在浏览者手里。比如我们有时候要查阅一些资料,被国内墙掉了,这时候我可以在国外的服务器上搭建一个nginx正向代理服务器,然后我们就可以通过浏览器设置代理服务器,来翻墙了。反向代理,是浏览者不知情的,服务器端自己假设的。
更加细致的分析:http://z00w00.blog.51cto.com/515114/1031287
下面以nginx为例子来搭建正向代理服务器和反向代理服务器
1.nginx正向代理配置
1. server{
2. resolver
8.8.8.8;
3. resolver_timeout
30s;
4. listen
82;
5. location / {
6. proxy_passhttp://$http_host$request_uri;
7. proxy_set_header
Host $http_host;
8. proxy_buffers
2564k;
9. proxy_max_temp_file_size
0;
10. proxy_connect_timeout
30;
11. proxy_cache_valid
20030210m;
12. proxy_cache_valid
3011h;
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反向代理服务器的配置
反向代理参考地址:
http://liuyu.blog.51cto.com/183345/166381/
http://www.blogjava.net/xiaomage234/archive/2011/09/08/358247.html (更加清晰点)
http://blog.csdn.net/chanya/article/details/7745459
这里我更加简洁的小结下,需要看完整版的,建议点击上面的链接。
下面是以负载均衡为例子的反向代理。
1. http {
2. #
省略了前面一般的配置,直接从负载均衡这里开始
3. #
设置地址池,后端3台服务器
4. upstreamhttp_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 timeoutinvalid_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_nametest.zhoumengkang.com;
4. location/ {
5. proxy_pass http://121.199.**.*:80; 6. }
7. }
相关文章推荐
- 浅谈什么是正向代理和反向代理,如何使用nginx搭建正向代理和反向代理
- Nginx系列一:正向代理和反向代理、Nginx工作原理、Nginx常用命令和升级、搭建Nginx负载均衡
- 什么是反向代理,如何区别反向与正向代理
- 如何搭建web服务器 使用Nginx搭建反向代理服务器
- 如何搭建web服务器 使用Nginx搭建反向代理服务器 .
- 如何搭建web服务器 使用Nginx搭建反向代理服务器
- 如何实现反向代理?与正向代理的区别以及Nginx 反向代理优势
- Nginx搭建之正向代理与反向代理辨析
- 什么是反向代理,如何区别反向与正向代理
- 使用nginx反向代理时,如何正确获取到用户的真实ip
- 什么是反向代理?以及网站如何预防被反向代理?
- 什么是正向代理,开放的代理软件使用
- nginx 反向代理和正向代理区别
- Nginx反向代理新篇-使用location对多个URL做反向代理
- Nginx搭建正向代理服务器
- 什么是反向代理,如何区别反向与正向代理
- 【转】什么是反向代理,如何区别反向与正向代理
- 在阿里云、微软Windows Azure、亚马逊AWS 上使用Nginx配置http正向代理服务器