Tôi có một ứng dụng Flask chạy với gunicorn trên http://127.0.0.1:4000
:Proxy một ứng dụng Flask chạy trên gunicorn đến một subpath trong nginx
gunicorn -b 127.0.0.1:4000 webapp:app
Bây giờ tôi muốn sử dụng nginx như một reverse proxy và chuyển tiếp http://myserver.com/webapp
-http://127.0.0.1:4000
trong một cách mà mỗi http://myserver.com/webapp/subpath
chuyển đến http://127.0.0.1:4000/subpath
.
Proxy/chuyển hướng hoạt động độc đáo khi không sử dụng một subpath:
upstream app {
server 127.0.0.1:4000 fail_timeout=0;
}
server {
listen 80 default;
client_max_body_size 4G;
server_name _;
location/{
proxy_pass http://app;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
Làm thế nào tôi có thể thiết lập
location /webapp {
#go to my gunicorn app, translate URLs nicely
}
Mẹo này từ các nhà phát triển Flask đã không làm việc:
http://flask.pocoo.org/snippets/35/
SOLVED: Đoạn mã http://flask.pocoo.org/snippets/35/ hoạt động! Tôi có một vài URL tuyệt đối trong các mẫu của tôi (ví dụ: /task/delete
) và phải thay đổi mọi thứ thành url_for()
.
Ngu ngốc ... nhưng bây giờ nó hoạt động như mong đợi, tôi có ứng dụng của tôi trên 'http://myserver.com/subpath'
Bạn có thể chỉ hiển thị bộ điều khiển trong chương trình ứng dụng Flask không? – Karthikeyan
@Karthikeyan đã hoàn tất! –
Vì vậy, myserver.com/today đang hoạt động, nhưng không phải myserver.com/webapp/today, phải không? – Karthikeyan