Nginx代理服务器
正向代理(数据转发)& 反向代理流程图
1、什么是代理服务器
代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。
2、为什么要使用代理服务器
1)提高访问速度
由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度;
2)防火墙作用
由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息;
3)通过代理服务器访问不能访问的目标站点
互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点。
3、Nginx正向代理服务器
正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。
4、Nginx反向代理服务器
反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
5、配置nginx代理局域网上网
① 添加网卡(一个外网、一个内网)
[root@138 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:fa:08:eb brd ff:ff:ff:ff:ff:ff
inet 192.168.25.138/24 brd 192.168.25.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::8fed:5970:dfc6:462b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:fa:08:f5 brd ff:ff:ff:ff:ff:ff
inet 192.168.43.129/24 brd 192.168.43.255 scope global noprefixroute dynamic ens36
valid_lft 1432sec preferred_lft 1432sec
inet6 fe80::20e5:6431:669d:f167/64 scope link noprefixroute
valid_lft forever preferred_lft forever
#注:ens33网卡为外网网卡、ens36网卡为内网网卡
② 配置文件
[root@138 ~]# cd /etc/nginx/conf.d/
[root@138 conf.d]# vim proxy.conf
server {
resolver 114.114.114.114; #指定DNS服务器IP地址
listen 8080; #服务端口,避免和http服务80端口冲突
location / {
proxy_pass http://$http_host$request_uri; #设定代理服务器的协议和地址(均为变量)
}
}
③ WindowsXP上网测试(模拟内网主机访问外网)
需要预先设定网卡模式为仅主机模式(模拟内网环境默认无法访问外网)
可以看到下图中IP地址为内网地址
以下步骤是配置数据包转发(转发给代理服务器处理)
打开浏览器(以IE为例),选择“工具”中的“Internet选项”
随后选择“连接”,在“局域网(LAN)设置”窗口中,选中“代理服务器”选项,并按照下图中填写“代理服务器IP地址”和“服务端口”
访问外网测试
可以看到都是可以正常访问的,但访问的仅仅是正常http服务,如果访问的是https服务,将不会成功(需要另外设置开启)
6、配置nginx反向代理
① 实验环境
代理服务器:外网192.168.25.138、内网192.168.43.129
实际内网服务器:内网192.168.43.136
客户:外网192.168.25.137
② 设置环境
代理服务器(双网卡,内网 & 外网):
实际内网服务器(仅主机模式):
客户(NAT外网):
调试网卡,移除网关,模拟环境(不然可以直接访问实际内网服务器)
[root@137 ~]# nmtui
进入到网卡配置处,选择第一项“Edit开头项”
选中对应网卡(此处是ens33),将光标移动到Edit
如下图所示,将网关(Gateway)项的内容清空
将光标移动到该页最低处的“OK”项
将光标移动到右下角的“Back”项
将光标移动到右下角的“OK”项
重启网卡服务调用配置
[root@www ~]# systemctl restart network
③ 实际内网服务器配置网站
安装apache
[root@136 ~]# yum install httpd -y
配置网页内容
[root@136 ~]# echo "反向代理测试界面" > /var/www/html/fanxiang.html
④ 配置文件
[root@138 conf.d]# vim proxy_fanxiang.conf
server {
listen 888;
server_name localhost;
location / {
proxy_pass http://192.168.43.136;
}
}
⑤ 客户进行测试
[root@137 ~]# curl 192.168.25.138:888/fanxiang.html
反向代理测试界面
如果返回的结果和上方结果一致,则表示成功