Nginx正向代理与反向代理的简单例子

    技术2023-11-18  84

    代理简介

    正向代理

    正向代理代理的是client。

    例如:有些网址我们在本地无法直接访问,需要在浏览器里面配置一个proxy,这个proxy就是正向代理。

    server只和proxy交互,并不知道client的存在。

    反向代理

    反向代理代理的是server。

    例如:server位于局域网之内,在外网无法直接访问,需要访问网关,然后通过网关来向内网转发request,这个proxy就是反向代理。

    client只和proxy交互,并不知道server的存在。

    Nginx正向代理

    假如现在有2个HTTP server A 和 B ,以及1个client机器 C 。

    A的IP地址:192.168.1.8B的IP地址:192.168.1.58

    A的配置如下:

    server { listen 6692; server_name localhost; location / { if ( $remote_addr !~* ^192\.168\.1\.58$) { return 403; } root /Users/kaiding/temp/temp0703; index index.html; } }

    可见,只能从 192.168.1.58 (即server B)来访问server A。

    从B访问:

    从C访问:

    要想让C能够访问server A,我们需要在server B上开启一个proxy server,然后让C通过B来代理其HTTP请求。

    在server B上配置正向代理如下:

    server { listen 6691; server_name localhost; resolver 8.8.8.8; location / { proxy_pass http://$http_host$request_uri; } }

    在C的浏览器里面配置HTTP代理如下:

    现在,C就可以访问到A了:

    Nginx反向代理

    (和刚才同样的场景)

    假如现在有2个HTTP server A 和 B ,以及1个client机器 C 。

    A的IP地址:192.168.1.8B的IP地址:192.168.1.58

    A的配置如下:

    server { listen 6692; server_name localhost; location / { if ( $remote_addr !~* ^192\.168\.1\.58$) { return 403; } root /Users/kaiding/temp/temp0703; index index.html; } }

    可见,只能从 192.168.1.58 (即server B)来访问server A。

    要想让C能够访问server A,我们需要在server B上开启一个proxy server来代理A,然后让C通过访问B来达到访问A的效果。

    在server B上配置反向代理如下:

    upstream myserverA { server 192.168.1.8:6692; } server { listen 6693; server_name localhost; location / { proxy_pass http://myserverA; } }

    现在,C就可以通过访问B,来达到访问A的效果了:

    注意:C的浏览器里面URL是B的地址,也就是说,C并不知道A的存在。

    Processed: 0.014, SQL: 9