weixin_44175770 2025-12-10 17:36 采纳率: 12.5%
浏览 5

如何通过nginx让内网局域网通过互联网区域的服务器访问互联网的某个IP+端口?

img


如上图,我客户机房内网区域隔离了外网,服务器ip192.168.10.10,外网区域一台服务器能上互联网172.168.60.10。公司互联网上有一个服务系统,其IP:202.58.10.10:8080.那么机房内网区域的那台服务器想要只访问互联网上的202.58.10.10:8080端口服务,该如何实现?
我了解过通过nginx实现,那么需要在哪台服务器上搭建nginx服务。 然后还需要在另外一台服务器上做什么配置?

  • 写回答

1条回答 默认 最新

  • 檀越@新空间 2025-12-10 18:03
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    要实现内网服务器通过外网服务器访问互联网上的某个IP+端口(如 202.58.10.10:8080),可以使用 Nginx 作为反向代理 来实现。以下是详细的解决方案和配置步骤。


    目标分析

    • 内网服务器:192.168.10.10
    • 外网服务器(可以上网):172.168.60.10
    • 要访问的互联网服务:202.58.10.10:8080

    目标是让内网服务器通过外网服务器,访问 202.58.10.10:8080 的服务。


    解决方案概述

    1. 在外网服务器上搭建 Nginx 作为反向代理。
    2. 配置 Nginx 将请求转发到 202.58.10.10:8080
    3. 内网服务器通过访问外网服务器的某个地址(如 http://172.168.60.10:8080)来间接访问目标服务。

    具体操作步骤

    1. 在外网服务器上安装 Nginx

    安装 Nginx(以 Ubuntu 为例)

    sudo apt update
    sudo apt install nginx -y
    

    启动并设置开机自启

    sudo systemctl start nginx
    sudo systemctl enable nginx
    

    2. 配置 Nginx 反向代理

    编辑 Nginx 配置文件:

    sudo nano /etc/nginx/sites-available/default
    

    在文件中添加如下内容(或修改现有配置):

    server {
        listen 8080;
        server_name your_domain_or_ip;  # 如果没有域名,可以写为 172.168.60.10
    
        location / {
            proxy_pass http://202.58.10.10:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    

    注意listen 8080; 是你希望外网服务器监听的端口,内网服务器将通过该端口访问。


    3. 测试并重启 Nginx

    sudo nginx -t  # 测试配置是否正确
    sudo systemctl restart nginx
    

    4. 内网服务器访问方式

    现在,内网服务器可以通过访问以下地址来访问外部服务:

    http://172.168.60.10:8080
    

    这相当于通过外网服务器代理访问了 202.58.10.10:8080


    关键点说明

    • Nginx 部署在外网服务器(172.168.60.10)
    • 内网服务器只访问外网服务器的 IP + 端口
    • Nginx 实现的是反向代理功能,不是直接访问目标地址,而是通过它进行转发。

    附加建议

    🛡️ 安全加固建议

    • 限制访问来源:可以在 Nginx 配置中添加 allowdeny 指令,限制只有特定 IP 可以访问。

      location / {
          allow 192.168.10.0/24;  # 允许内网 IP 段访问
          deny all;
          proxy_pass http://202.58.10.10:8080;
          ...
      }
      
    • 启用 HTTPS:如果需要安全传输,可以配置 SSL 证书。


    总结

    | 步骤 | 操作 | |------|------| | 1 | 在外网服务器(172.168.60.10)上安装 Nginx | | 2 | 配置 Nginx 反向代理到 202.58.10.10:8080 | | 3 | 重启 Nginx 使配置生效 | | 4 | 内网服务器通过访问 http://172.168.60.10:8080 访问目标服务 |


    代码示例(Nginx 配置)

    server {
        listen 8080;
        server_name 172.168.60.10;
    
        location / {
            proxy_pass http://202.58.10.10:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    

    如有更多需求(如负载均衡、SSL、限流等),也可以进一步扩展 Nginx 配置。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月10日