Puncte:0

Schimbați calea publică a trecerii proxy Nginx

drapel in

Am un API Python/Django cu un punct final unic /Videoclipuri rulează pe serverul meu Debian.

Vhost-ul Nginx arată astfel:

Server {

    nume_server example.com;

    Locație / {
        # Treceți la serviciul de server web Uvicorn/Gunicorn
        proxy_pass http://nume_amonte/;
        proxy_set_header Gazdă $gazdă;
        proxy_set_header X-Real-IP $adresă_la distanță;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $schema;
    }

    asculta 443 ssl; # gestionat de Certbot
    certificat_ssl /path_to/fullchain.pem; # gestionat de Certbot
    ssl_certificate_key /path_to/privkey.pem; # gestionat de Certbot
    includ /etc/letsencrypt/options-ssl-nginx.conf; # gestionat de Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # gestionat de Certbot

}

upstream upstream_name {
    server 127.0.0.1:8002;
}

Astfel, servește cu succes aplicația și punctul său final unic https://example.com/videos.

Acum, aș dori să difuzez aplicația https://example.com/my_app/videos, pentru a avea pe viitor alte aplicații servite pe același domeniu/vhost (cu diferite porturi interne, diferite upstream-uri în vhost desigur).

Am citit mai multe întrebări similare pe ServerFault și am încercat să le schimb Locație / la locație /my_app, în timp ce încercați diferite configurații de bare oblice Locație și proxy_pass, fără succes. Ce îmi lipsește aici?

EDIT: Mai precis:

  • Cu vhost-ul schimbat în locație /myapp -> https://example.com/my_app/videos afișează o eroare Not Found (nu de la Nginx)

  • Cu vhost-ul schimbat în locație /my_app/ -> https://example.com/my_app/videos fi redirecționat către https://example.com/videos/ și afișează o eroare 404 Not Found (de la Nginx)

drapel us
Vă rugăm să afișați configurația exactă pe care ați încercat-o și ce pași ați urmat pentru a reproduce problema?
drapel in
@TeroKilkanen Sigur, editat.
drapel us
Trebuie să configurați noua adresă URL rădăcină în aplicația dvs. Pentru mine, a doua eroare pare că aplicația dvs. trimite redirecționarea către URI `/videos`.
drapel in
Ai dreptate, are nevoie de o configurație din partea aplicației. Am rezolvat-o adăugând parametrul FORCE_SCRIPT_NAME în setarea lui Django. Mai precis, are nevoie de FORCE_SCRIPT_NAME = '/my_app/' CU slash final.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.