系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > server > anz > 详细页面

nginx正向代理与反向代理详解

时间:2020-03-12来源:电脑系统城作者:电脑系统城

正向代理

就是假设有一个内网

内网有两台机器,这两台机器只有 a 可以上网

b 不能上网,但是 a 和 b 通过网络相连接

这时如果 b 想访问外网,就可以通过 a 来正向代理访问外网

正向代理就是在内网中模拟目标服务器,把内网中其它机器的请求

转发给外网中的真正的目标服务器

所以正向代理是接受内网其它机器的请求的

反向代理则是反过来

也是一个内网,有几台机器,只有其中一台与外网连接

但是反向代理接受的不是内网机器的访问请求

反向代理接受的是外网过来的访问请求

然后把请求转发到内网中的其它机器上去

外网发出请求的用户并不知道反向代理的服务器把请求转发给了谁

要在一台机器上设置正向代理的功能

nginx正向代理与反向代理详解

如图,编辑一个nginx配置文件

上图就是配置文件内容

如果配置一台服务器作为正向代理服务器

那么这个虚拟主机配置文件就必须是默认虚拟主机

因为所有访问这台机器的网络请求应该先访问这个虚拟主机才对

所以这里要设置 default_server

然后还要把原来的 默认虚拟主机 配置文件名称修改掉

nginx正向代理与反向代理详解

如图,把 default.conf 配置文件的名称修改一下

这样就取消了原来的默认虚拟主机配置文件了

因为默认的默认虚拟主机配置文件就是 default.conf

配置文件里面的 resolver 119.29.29.29

意思是配置一个 dns 地址

因为是做正向代理,接受了内网请求的域名后

要把请求发送给真正要访问的服务器

但是内网发送的域名是没有包含 ip 地址的

所以还要把域名发送给 dns 服务器解析 ip 地址

拿到 ip地址后才能转发到要访问的服务器上去

所以这里需要配置一个 dns 地址

接受了内网域名后,就会把域名发送到这个 dns 上去解析

下面的 location 按照图中设置就可以了

这样正向代理服务器接受内网机器请求后

就会把域名发到配置的dns上解析,然后访问真正的服务器

再把真正服务器返回的内容发送给发出请求的内网机器

nginx反向代理

做一个反向代理的例子

nginx正向代理与反向代理详解

如图建立一个测试的虚拟主机配置文件

监听 8080 端口,域名为 www.test.com

根目录是 /data/wwwroot/test.com

访问虚拟主机显示的首页文件是 index.html

nginx正向代理与反向代理详解

如图,创建虚拟主机的根目录 /data/wwwroot/test.com

然后使用 echo "test.com_8080" > !$/index.html

创建一个内容为 test.com_8080 的首页文件

这个文件在 /data/wwwroot/test.com 目录里面

nginx正向代理与反向代理详解

如图,新建一个反向代理的虚拟主机配置文件

监听 80 端口,域名为 www.test.com

下面的 location / 里面就是反向代理的配置

当访问这个虚拟主机的时候,就会把访问请求发送给 127.0.0.1:8080

nginx正向代理与反向代理详解

如图,使用 curl 访问 127.0.0.1:8080 虚拟主机

成功返回了 test.com_8080 这说明这个虚拟主机能够被访问

nginx正向代理与反向代理详解

如图,再创建一个虚拟主机配置文件

跟之前的 test 虚拟主机差不多

但是这个虚拟主机并没有设置 域名

location 设置返回的内容是 8080 default 字符串

保存退出,重载 nginx

还要把 test虚拟主机的 default server 设置取消掉

那么现在 127.0.0.1:8080 对应两个虚拟主机

一个是 test 虚拟主机,另外一个是 8080 default 虚拟主机

这两个虚拟主机的 ip 端口都是一模一样的

它们的区别是 test 虚拟主机是有域名的

而 8080 default 虚拟主机是没有域名的

现在已经设置了 8080 default 为默认虚拟主机

所以如果只访问 127.0.0.1:8080 的话

访问的一定是 8080 default 虚拟主机

如果想访问 test 虚拟主机,就需要加上 test 虚拟主机的域名

分享到:

相关信息

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载