Tôi có API (Python, dựa trên DRF), chạy dưới dạng dịch vụ Uvicorn trên cổng 8002 trên máy chủ Debian.
Nó chạy không có vấn đề rõ ràng, kể từ khi tôi làm cuộn tròn http://127.0.0.1:8002/videos/
, tôi nhận được phản hồi API dự kiến (tôi cũng đã kiểm tra nó khi được triển khai trên Heroku mà không gặp vấn đề gì).
Tôi cần phân phối nó công khai với Nginx, vì vậy tôi đã định cấu hình một vhost Nginx mới làm proxy ngược như sau:
ngược dòng my_api {
máy chủ 127.0.0.1:8002;
}
người phục vụ {
server_name example.com;
địa điểm / {
# Chuyển đến dịch vụ máy chủ web Uvicorn/Gunicorn
proxy_pass http://my_api;
proxy_set_header Máy chủ lưu trữ $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;
}
}
thông tin error_log /home/www/mydomain.log;
Trên trình duyệt, tôi gặp lỗi 400 Yêu cầu không hợp lệ, cho dù đó là trên http://example.com/videos/
hoặc thậm chí trên http://example.com/
hoặc http://example.com/whatever
.
Khi tôi nối đuôi /home/www/example.log
Nginx vhost, tôi không nhận được bất kỳ thông tin thích hợp nào hoặc nhật ký từ các vhost khác, như sau:
2021/07/09 12:05:49 [thông tin] 24698#24698: *233765 client 55.36.148.206 đã đóng kết nối cố định
2021/07/09 12:06:12 [thông tin] 24698#24698: *233772 client 217.244.66.202 đã đóng kết nối cố định
2021/07/09 12:06:13 [thông tin] 24698#24698: *233775 máy khách đã đóng kết nối trong khi chờ yêu cầu, máy khách: 63.210.40.102, máy chủ: 0.0.0.0:80
(Lưu ý: điểm cuối duy nhất hoạt động cho /video/
tuyến đường nhưng không dành cho /video
lộ trình - điều này sẽ được khắc phục sau nhưng dù sao thì điều đó cũng không ảnh hưởng đến câu hỏi.)
Bạn có biết cách gỡ lỗi/hiểu lỗi 400 này đến từ đâu không?