您的位置:首页 > 运维架构 > 反向代理

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

2020-07-15 05:43 1611 查看

代理简介

正向代理

正向代理代理的是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.8
  • B的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.8
  • B的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的存在。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: