修改 Nginx 代理传递公共路径

修改 Nginx 代理传递公共路径

/videos我有一个在我的 Debian 服务器上运行的具有唯一端点的 Python/Django API 。

Nginx vhost 如下所示:

server {

    server_name example.com;

    location / {
        # Pass to Uvicorn/Gunicorn web server service
        proxy_pass http://upstream_name/;
        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 443 ssl; # managed by Certbot
    ssl_certificate /path_to/fullchain.pem; # managed by Certbot
    ssl_certificate_key /path_to/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

upstream upstream_name {
    server 127.0.0.1:8002;
}

因此,它成功地为该应用程序及其唯一的端点提供服务https://example.com/videos

现在,我想在 上提供该应用程序https://example.com/my_app/videos,以便将来在同一个域/虚拟主机上提供其他应用程序(当然,具有不同的内部端口,虚拟主机中的不同上游)。

我已经阅读了 ServerFault 上的几个类似问答,并尝试更改location /为,同时在和上location /my_app尝试不同的尾部斜杠配置,但均未成功。我在这里遗漏了什么?locationproxy_pass

编辑:更准确地说:

  • 将 vhost 更改为location /myapp->https://example.com/my_app/videos显示 Not Found 错误(不是来自 Nginx)

  • 将 vhost 更改为location /my_app/->https://example.com/my_app/videos重定向到https://example.com/videos/并显示 404 Not Found 错误(来自 Nginx)

相关内容