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

如何配置Nginx反向代理,实现localhost路径映射至不同端口服务

Nginx反向代理配置:映射子路径到服务根目录

要实现将http://localhost/serviceA转发到8080端口的Service A根路径,http://localhost/serviceB转发到8081端口的Service B根路径,核心是在代理时移除请求路径中的/serviceA和/serviceB前缀——因为两个服务仅提供根路径/的服务。

完整配置示例

在Nginx的配置文件(通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/下的自定义配置文件)中添加以下server块:

server {
    listen 80;
    server_name localhost;

    # 处理Service A的代理请求(带尾部斜杠)
    location /serviceA/ {
        # 自动移除/serviceA/前缀,转发到Service A的根路径
        proxy_pass http://localhost: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;
    }

    # 处理Service B的代理请求(带尾部斜杠)
    location /serviceB/ {
        proxy_pass http://localhost:8081/;
        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 = /serviceA {
        return 302 /serviceA/;
    }

    location = /serviceB {
        return 302 /serviceB/;
    }
}

关键配置说明

  1. proxy_pass末尾的斜杠:当proxy_pass的URL末尾带有/时,Nginx会自动将location匹配的前缀(如/serviceA/)移除,把剩余部分追加到目标URL的根路径后。例如,访问http://localhost/serviceA/api会被转发到http://localhost:8080/api。
  2. 不带斜杠的请求处理:location = /serviceA用于精确匹配不带尾部斜杠的请求,通过302重定向到带斜杠的版本,确保前缀移除逻辑正常生效,避免出现404错误。
  3. 请求头设置:proxy_set_header系列配置用于传递客户端的真实IP和主机信息给后端服务,部分服务依赖这些头信息正常工作。

可选的rewrite方式

如果你需要更灵活的路径转换,也可以用rewrite指令替代proxy_pass的斜杠方式,效果一致:

location /serviceA/ {
    rewrite ^/serviceA/(.*)$ /$1 break;
    proxy_pass http://localhost:8080;
    # 同样添加proxy_set_header配置
}

生效配置

修改完成后,重新加载Nginx配置(不中断服务)或重启Nginx:

# 重新加载配置
sudo systemctl reload nginx

# 或重启服务
sudo systemctl restart nginx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:45:18