Nginx代理实现内网主机访问公网服务

通过Nginx代理实现内网主机访问公网和接口服务

1.需求:

  m2.test.com为公司测试环境的微信测试域名,因为要调用微信服务接口需要访问外网,现通过Nginx代理现实此功能.

2.环境如下:

10.20.9.31 为内网测试环境Nginx的代理主机,代理测试环境的java程序.
10.100.64.18 是Nginx反向代理主机,公网映射地址为:124.251.12.198,在此上面配置的域名通过解析后可以直接访问公网.
10.100.230.10 也是Nginx的代理主机,通过NAT转发实现内网测试(10.20.9.31)和机房主机(10.100.230.10)的互通,其中10.100.64.18和10.100.230.10是互通的.

3.实现步骤:

10.100.64.18 Nginx配置:

server {
        listen  80;     
        server_name  m2.test.com;
        access_log    /tmp/access.log main;
        error_log    /tmp/error.log;


        location / {
            proxy_pass http://10.100.230.10:80;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For 
        }

}
#80和443端口都代理到230.10:80主机上面去.

10.100.230.10 Nginx配置

server {
        listen  80;
        server_name m2.test.com;
        access_log    /tmp/access.log main;
        error_log    /tmp/error.log;

        location / {
                proxy_pass http://10.20.9.31:80;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

}

#这个直接代理的是测试环境Nginx代理主机,也可以直接代理后端测试环境java主机,但是建议直接代理后端Nginx主机,然后再内网Nginx代理内网测试java程序,已方便维护.

10.20.9.31 Nginx配置,代理测试环境java主机程序.

server {
    listen 80;
    server_name m2.test.com;
    access_log /tmp/access.log main;
    error_log /tmp/error.log;

    location / {
        proxy_pass      http://10.20.9.53:8009;
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    
    
 
    location /static {
        alias /opt/mobile/static;
    }

}

#这个代理就可以对后端程序进行代理和设置

实现dns解析地址

m2.test.com 124.251.12.198,这样就实现了通过代理实现内网访问公网的服务.

 

 结语:上面的方法实现就Ngnix代理走了三次,其实也可以直接在10.100.64.18主机做NAT地址转发访问10.20.9网段的地址,少走一层代理维护也方便.

 

 

  

 

posted @ 2018-01-31 10:14  梦徒  阅读(26257)  评论(0编辑  收藏  举报