通过nginx反代内网网站

内网服务器:内网ip10.1.200.60,opvn ip:192.168.20.11,os:ubuntu
反代服务器:opvn ip:192.168.20.12,os:centos7

安装opvn和nginx

centos7:

1
2
3
yum install epel-release
yum install openvpn -y
yum install nginx -y

ubuntu:

1
apt-get install openvpn

具体证书生成和配置文件看这里
ubuntu/centos6.X使用openvpn
要用opvn记得关闭selinux
是两个服务器都要关闭和开启
还有开启转发

1
2
3
4
5
vim /etc/sysctl.conf 
net.ipv4.ip_forward=1
#如果注释了就删了注释,如果是空的,就加入这句
#然后退出
sysctl -p

然后opvn的设置参考上面文章,之后开启opvn
之后再内网服务器内开启伪装

1
2
iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o eth0 -j MASQUERADE
service iptables save

然后要在外网服务上写路由表
例如要访问的网站是http://10.1.200.60:8080/
那么路由表应该通过opvn的网卡指向那ip
例如网卡是tun5

1
route add -net 10.1.200.0/24 dev tun5

然后ping一下,通了就可以了

在之后在外网的nginx的配置文件内设置反代的信息
具体文件位置可以参考nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
server {
        listen 80;
        server_name cj.lovelixiang.com;
 
    location / {
        proxy_redirect http://10.1.200.60:8080/ /;
        sub_filter '10.1.200.60:8080' 'cj.lovelixiang.com';
        sub_filter_types  text/css text/xml text/js application/xhtml+xml application/xml;
        sub_filter_once off;
 
        subs_filter_types text/php text/html text/htm text/css text/xml text/js application/xhtml+xml application/xml;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header referer "http://10.1.200.60:8080";
        proxy_set_header Host 10.1.200.60:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header User-Agent $http_user_agent;
        proxy_set_header   Accept-Encoding "";
        proxy_pass http://10.1.200.60:8080;
        client_max_body_size 1024m;
 
        if ($request_filename ~ 404.html){
           return 301 http://lx.lovelixiang.com/error/404.html;
           }
 
        }
}

这里就是将http://10.1.200.60:8080/ 反代成为http://cj.lovelixiang.com
然后能访问就可以了

添加评论