Tôi có một WSGI ứng dụng (một dự án Django) chạy dưới gunicorn trên 127.0.0.1:18731
và tôi sử dụng Apache với mod_proxy để chuyển hướng yêu cầu từ http://example.com/my-project/*
để http://127.0.0.1:18731/*
. Các tệp tĩnh được lưu trữ bên ngoài /my-project/
. Nếu ứng dụng Django không cần chuyển hướng bất cứ điều gì, điều này chỉ hoạt động tốt, nhưng nếu nó cố gắng chuyển hướng một yêu cầu (ví dụ: để thêm dấu gạch chéo vào http://example.com/my-project/foo
), kết thúc sẽ xóa /my-project/
khỏi URL, để lại cho tôi URL không hợp lệ http://example.com/foo/
.gunicorn qua mod_proxy được chuyển hướng bên ngoài phạm vi của dự án, mặc dù ProxyPassReverse
cấu hình mod_proxy của tôi là như sau:
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests On
ProxyPass /my-project/ http://127.0.0.1:18731/ retry=0
ProxyPassReverse /my-project/ http://127.0.0.1:18731/ retry=0
ProxyPreserveHost On
ProxyErrorOverride Off
Tôi không muốn để buộc Django tiền tố /my-project/
cho tất cả các URL của nó, vì lợi ích của tính di động. Apache dường như sẽ tự xử lý tiền tố với dòng ProxyPassReverse
. Tôi đang làm gì sai?
Bạn không thích điều gì về giải pháp? –
Tôi muốn cho các ứng dụng tôi phát triển để có sẵn dưới tên miền phụ cá nhân của tôi, thay vì tạo ra một cái mới dành riêng cho Django. – Fraxtil