You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Nginx配置运行IP:9000、IP:8080两个服务?附现有配置

Nginx反向代理配置:运行两个后端服务(IP:9000 & IP:8080)

Alright, let's get your two services proxied through Nginx smoothly. Based on your existing server block, here are two straightforward solutions you can pick from:

方案1:通过不同路径代理(适合无域名,用IP访问)

这是最适合仅用IP访问场景的方案,我们只需要在你现有的server块中添加两个location块,分别将流量路由到对应的后端服务。

以下是更新后的完整配置:

server {
    listen 80;
    #listen 443 ssl http2 default_server;
    #listen [::]:443 ssl http2 default_server;
    server_name myIP;
    root /var/www/html/web/admin_and_store_panel/;
    #ssl_certificate "/etc/letsencrypt/live/<YOUR_DOMAIN_NAME>/fullchain.pem";
    #ssl_certificate_key "/etc/letsencrypt/live/<YOUR_DOMAIN_NAME>/privkey.pem";
    #ssl_session_cache shared:SSL:1m;
    #ssl_session_timeout 10m;
    #ssl_ciphers HIGH:!aNULL:!MD5;
    #ssl_prefer_server_ciphers on;

    # 代理到IP:9000的服务(可以自定义路径名称)
    location /admin-service/ {
        proxy_pass http://IP:9000/;
        # 将客户端关键信息传递给后端服务
        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;
    }

    # 代理到IP:8080的服务
    location /store-service/ {
        proxy_pass http://IP: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;
    }

    # 保留原根路径的访问(如果不需要可以删除这个块)
    location / {
        try_files $uri $uri/ =404;
    }
}

关键说明:

  • proxy_pass http://IP:9000/;末尾的斜杠非常重要,它能确保/admin-service/之后的路径会完整传递给后端服务。比如访问http://myIP/admin-service/login会转发到http://IP:9000/login。
  • proxy_set_header系列配置是为了让后端服务能获取真实的客户端IP和请求协议,对日志记录和安全校验很有帮助。

方案2:通过子域名代理(适合有域名的场景)

如果你拥有自己的域名(比如yourdomain.com),可以为每个服务设置独立的子域名,让URL更清晰。在现有server块之外添加以下两个独立的server块即可:

# 你的原有server块保留在这里

# 代理到IP:9000的后台服务
server {
    listen 80;
    server_name admin.yourdomain.com;

    location / {
        proxy_pass http://IP:9000/;
        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;
    }
}

# 代理到IP:8080的商店服务
server {
    listen 80;
    server_name store.yourdomain.com;

    location / {
        proxy_pass http://IP: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;
    }
}

前置准备:

  • 确保你的域名DNS记录已经将admin.yourdomain.com和store.yourdomain.com指向服务器IP。

配置生效的最后步骤

  1. 测试配置,检查是否有语法错误:
    sudo nginx -t
    
  2. 如果测试通过,重启Nginx应用更改:
    sudo systemctl restart nginx
    

重要检查项

  • 确保运行在IP:9000和IP:8080的后端服务允许Nginx服务器的IP访问,检查防火墙规则或后端应用的访问控制列表。
  • 后续要启用HTTPS时,只需取消配置中的SSL相关注释并更新证书路径即可,代理逻辑无需修改。

内容的提问来源于stack exchange,提问作者Foram Sojitra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:08:10