情况一:
机房里有多台服务器,但只有一台服务器连接外网,则用户只能通过带外网的服务器去访问不带外网的服务器,这个就是反向代理。这里服务器B代理了客户A通过内网去访问服务器C。
最终达成A客户访问到不带公网的C服务器。
情况二:
C服务器虽然有外网,但是A直接访问C服务器很慢,而A访问B服务器快,B服务器访问C服务器也快。这种情况下A访问B服务器让B服务器代理访问C服务器。
现在场景需要设置成:
用虚拟机二模拟服务器B , 之前配置了bbs,blog的虚拟机模拟服务器A
添加网卡
现在是双网卡模式了
配置新网卡的IP地址
可见2个网卡,2个IP地址。
查一下网卡配置文件,只有一个网卡ens33 ,并没有ens37
这是因为ens37是自动获取的。
所以我们需要把他配置成静态文件
所以复制一个ens33修改成ens37
vi编辑,把IPADDR改成前面查出来的自动配置的IP一样,不然可能会有2个IP,一个自动的IP一个你设置的IP。GATEWAY和DNS1都可以删除了。
重启网络服务
给二号机也要装nginx
从一号机先内网地址传配置文件过去
scp —— 向目标IP地址复制文件
然后二号机yum安装nginx
修改配置文件 vi /etc/nginx/conf.d/default.conf ,直接deny all禁止掉
然后新建一个 bbs.aminglinux.cc 文件,里面不用填root什么的,只要配置一下端口和域名再加上。
location /
{
proxy_pass http://目标服务器A的内网ip;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
http:// IP :最终的服务器A内网的IP ,最终B是通过内网连上A的。
proxy_set_header Host : 指header信息中的域名,$host指的就是server_name,server_name是在虚拟主机配置文件中定义的。
proxy_set_header X-Real-IP : 指header 信息中C的IP,就是被代理方的IP
proxy_set_header X-Forward-For : 指作为代理方B访问A时候用的IP
(X-Real-IP , X-Forward-For 主要体现在访问日志里)
修改完,需要启动nginx服务,nginx –s reload才有意义
想用systemctl start nginx 启动nginx 但是失败。
换一种方式 ,直接用/usr/sbin/nginx启动
pkill停止一下nginx再重新systemctl启动,这次启动成功。
防火墙 加入80端口
重载防火墙
iptables -nvl |grep 80 —— 查询端口启用情况
至此,80端口成功加入,防火墙成功关闭。配置二号机的hosts就可以实现代理功能。
hosts改成是设定的外网IP,则外网的访问就会到B上,B再通过内网去找A。