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、将来的に同じドメイン/vhost で他のアプリ (もちろん、vhost 内の異なる内部ポート、異なるアップストリームを使用) を提供したいと考えています。

ServerFault で同様の Q/A をいくつか読んでいて、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 から)

関連情報