这几天一台云上的服务器到期了,想搞个奇思妙想在云上买一个配置一般的vps做代理服务器,监听特定端口转发到内网。即本地环境通过另外一种方式配置到云上访问。
请大家注意,这种方式相比frp来说安全一点,但是一定要注意内网服务器本身的安全性,另外还要设ACL规则,明确来源IP,网关策略一定要配置妥当,要不然真不是开玩笑的,如果大家想试一下,可以按照我的步骤试试。
环境说明:
centos7 / nginx / proxy / acme-ssl / 一个可以运行的website
- 安装haproxy
yum install haproxy
- 打开proxy的配置文件:
vim /etc/haproxy/haproxy.cfg
打开之后的需要更改默认配置项,我的目标是监听443端口,把请求的流量由公网IP端口转发到内网环境,然后反代渲染数据(简单来说就是把443端口的流量都转到内网了)。先把我的配置文件改动给大家标出,达到可用地步。
需要添加的是:
listen web
bind *:443
mode tcp
option tcplog
timeout client 10800s
timeout server 10800s
default_backend webserver
backend webserver
balance roundrobin
server 起个别名 你公司的公网IP:端口 send-proxy
注意,我这里是监听的443端口,大家可以根据自己的需要监听其他任何端口,比如80等,需要提醒大家的是,如果在这个代理服务器上出现了多个站点,那么这个代理服务器上所有站点的443端口的流量都将被转发。
- 重启服务:
systemctl restart haproxy - 查看端口监听情况:
netstat -ntlp
可以看到端口已被监听,正常。
5. 下面开始设置内网环境
说明:我的网站是用nginx代理的,此时需要接收内网转给我们的流量,接收用proxy_protocol声明一下就行。
为了保证内网可以直接访问,我这里直接复制了一份server,相当于增加了一个虚拟站点,指定webroot即可。
6. 重启nginx
7. 至此,我们内网可以访问,外网访问域名的时候,可以直接从代理服务器转发到内网,完成了我们的目的。还需要说明一点,我的ssl是acme自签,关于域名解析与acme签证的问题我将在下一篇文章中给与介绍。