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

如何在非根路径的server location中通过proxy_pass转发至Unix套接字?

解决Nginx代理转发到/myapi/路径的配置问题

当你需要将mysite.com/myapi/路径下的请求转发到Gunicorn的Unix套接字时,核心问题是处理Nginx对请求路径的传递规则,以下是两种可行的配置方案:

方案一:调整proxy_pass末尾的斜杠

server {
    listen 80;
    server_name mysite.com www.mysite.com;

    location /myapi/ {
        # 末尾添加斜杠,让Nginx自动替换路径前缀
        proxy_pass http://unix:/home/myuser/app/run/gunicorn.sock/;
    }
}

这种写法下,Nginx会将请求中的/myapi/前缀替换为/后再转发给后端。比如curl mysite.com/myapi/data会被转发为后端的/data请求,和原来根路径转发的逻辑完全一致。

方案二:用rewrite重写请求路径

server {
    listen 80;
    server_name mysite.com www.mysite.com;

    location /myapi/ {
        # 重写URI,去掉/myapi/前缀
        rewrite ^/myapi/(.*)$ /$1 break;
        proxy_pass http://unix:/home/myuser/app/run/gunicorn.sock;
    }
}

通过rewrite规则将/myapi/xxx格式的请求重写为/xxx,再转发给后端,效果和方案一相同,适合需要更灵活路径处理的场景。

注意事项

  • 必须使用location /myapi/(带末尾斜杠),这样只会匹配以/myapi/开头的合法请求,避免误匹配类似/myapia这类不符合预期的路径。
  • 无需使用alias指令,alias主要用于映射本地文件系统路径,不适用于代理转发场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:48:13