Nginx正向与反向代理

Posted cwmizlp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx正向与反向代理相关的知识,希望对你有一定的参考价值。

nginx 主要用于反向代理与负载均衡

 

什么是代理服务器(Proxy Serve)?

    提供代理服务的电脑系统或其它类型的网络终端,代替网络用户去取得网络信息。

 

为什么使用代理服务器?

    • 提高访问速度 
          由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门网站能明显提高访问速度。

    • 防火墙作用 
          由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可以在代理服务器上设限,过滤掉某些不安全信息。同时正向代理中上网者可以隐藏自己的IP,免受攻击。

    • 突破访问限制 
          互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的FQ浏览器就是利用了代理服务器,可以直接访问外网。

 

 

正向代理

     正向代理(forward proxy) ,一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并制定目标(原始服务器),然后代理向原始服务器转发请求并将获得的内容返回给客户端,客户端才能使用正向代理。我们平时说的代理就是指正向代理。 
    简单一点:A向C借钱,由于一些情况不能直接向C借钱,于是A想了一个办法,他让B去向C借钱,这样B就代替A向C借钱,A就得到了C的钱,C并不知道A的存在,B就充当了A的代理人的角色

 

技术分享图片

 

 

 

 

反向代理

    反向代理(Reverse Proxy),以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求的客户端,此时代理服务器对外表现为一个反向代理服务器。 
    理解起来有些抽象,可以这么说:A向B借钱,B没有拿自己的钱,而是悄悄地向C借钱,拿到钱之后再交给A,A以为是B的钱,他并不知道C的存在。

 

技术分享图片

 

 

 

正向代理和反向代理的区别

  • 位置不同 
    正向代理,架设在客户机和目标主机之间; 
    反向代理,架设在服务器端;
  • 代理对象不同 
    正向代理,代理客户端,服务端不知道实际发起请求的客户端; 
    反向代理,代理服务端,客户端不知道实际提供服务的服务端;

 

技术分享图片

 

  • 备注:正向代理–HTTP代理为多个人提供FQ服务;反向代理–百度外卖为多个商户提供平台给某个用户提供外卖服务。
  • 用途不同 
    正向代理,为在防火墙内的局域网客户端提供访问Internet的途径; 
    反向代理,将防火墙后面的服务器提供给Internet访问;
  • 安全性不同 
    正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为授权的客户端提供服务; 
    反向代理都对外都是透明的,访问者并不知道自己访问的是哪一个代理。

正向代理的应用

 

    1. 访问原来无法访问的资源 
    2. 用作缓存,加速访问速度 
    3. 对客户端访问授权,上网进行认证 
    4. 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

 

反向代理的应用

    1. 保护内网安全 
    2. 负载均衡 
    3. 缓存,减少服务器的压力 
       Nginx作为最近较火的反向代理服务器,安装在目的主机端,主要用于转发客户机请求,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后台的服务器,决定哪台目标主机来处理当前请求。

 

可以看看   https://www.cnblogs.com/Anker/p/6056540.html

文章出自   https://blog.csdn.net/zt15732625878/article/details/78941268

 

 

下载Nginx后,解压如下

 

技术分享图片

 

 

nginx.conf  配置如下

 

 1 ########### 每个指令必须有分号结束。#################
 2 #user administrator administrators;  #配置用户或者组,默认为nobody nobody。
 3 #worker_processes 2;  #允许生成的进程数,默认为1
 4 #pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址
 5 error_log logs/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
 6 events {
 7     accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
 8     multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
 9     #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
10     worker_connections  1024;    #最大连接数,默认为512
11 }
12 http {
13     include       mime.types;   #文件扩展名与文件类型映射表
14     default_type  application/octet-stream; #默认文件类型,默认为text/plain
15     #access_log off; #取消服务日志    
16     log_format myFormat $remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for; #自定义格式
17     access_log logs/access.log myFormat;  #combined为日志格式的默认值
18     sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
19     sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
20     keepalive_timeout 10;  #连接超时时间,默认为75s,可以在http,server,location块。
21     proxy_connect_timeout 5; #nginx服务器与被代理的服务器建立连接的超时时间,默认60秒
22     proxy_intercept_errors on;  #如果被代理服务器返回的状态码为400或者大于400,设置的error_page配置起作用。默认为off。
23   
24    upstream mysvr {   
25       server 192.168.3.121:9985;
26       #server 192.168.3.211:80 backup;  #热备 当一台服务器发生事故时,才启用第二台服务器给提供服务
27     }
28     error_page 504 https://www.baidu.com; #错误页
29 
30     
31     server {
32         keepalive_requests 120; #单连接请求上限次数。
33         listen       10000;   #监听端口
34         server_name  127.0.0.1;   #监听地址       
35         location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
36            #root path;  #根目录
37            #index vv.txt;  #设置默认页
38            proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表
39            
40            #deny 127.0.0.2;  #拒绝的ip
41            #allow 127.0.0.1; #允许的ip           
42         } 
43     }
44 }

 

 IIS中  127.0.0.1:10000  不需要设置网点,访问此网址后  自动跳转    192.168.3.121:9985

 

 

 

配置详解可以看看   https://www.cnblogs.com/knowledgesea/p/5175711.html   和    https://blog.csdn.net/kingscoming/article/details/79042874




















以上是关于Nginx正向与反向代理的主要内容,如果未能解决你的问题,请参考以下文章

nginx实践之代理服务(正向代理与反向代理介绍)

nginx 正向代理与反向代理

Nginx教程 正向代理与反向代理总结

Nginx 学习 —— 正向代理与反向代理

nginx的反向代理与正向代理

Nginx正向代理与反向代理