Am un API (Python, bazat pe DRF), care rulează ca serviciu Uvicorn pe portul 8002 pe un server Debian.
Funcționează fără nicio problemă aparentă, de când fac eu curl http://127.0.0.1:8002/videos/
, primesc răspunsul API așteptat (de asemenea, l-am testat când a fost implementat pe Heroku, fără nicio problemă).
Trebuie să îl servesc public cu Nginx, așa că am configurat un nou vhost Nginx ca proxy invers, după cum urmează:
în amonte my_api {
server 127.0.0.1:8002;
}
Server {
nume_server example.com;
Locație / {
# Treceți la serviciul de server web Uvicorn/Gunicorn
proxy_pass http://my_api;
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;
}
}
error_log /home/www/mydomain.log info;
Pe browser, primesc o eroare 400 Bad Request, indiferent dacă este activată http://example.com/videos/
sau chiar pe http://example.com/
sau http://example.com/whatever
.
Când îl urmăresc pe /home/www/example.log
Fișierul jurnal Nginx vhost, nu primesc nicio informație relevantă sau jurnale de la alte vhost-uri, cum ar fi următoarele:
2021/07/09 12:05:49 [info] 24698#24698: *233765 client 55.36.148.206 conexiune keepalive închisă
2021/07/09 12:06:12 [info] 24698#24698: *233772 client 217.244.66.202 conexiune keepalive închisă
2021/07/09 12:06:13 [info] 24698#24698: *233775 client a închis conexiunea în așteptarea solicitării, client: 63.210.40.102, server: 0.0.0.0:80
(Notă: punctul final unic funcționează pentru /Videoclipuri/
traseu dar nu pentru /Videoclipuri
ruta - aceasta va fi rezolvată mai târziu, dar oricum asta nu ar trebui să interfereze cu întrebarea.)
Aveți idee cum să depanați/înțelegeți de unde vine această eroare 400?