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配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 @   梦徒  阅读(26804)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示