Tôi đã trải qua một số chủ đề theo thời gian: How do I set subdirectory in nginx with Django how to deploy django under a suburl behind nginx Serving flask app on subdirectory nginx + uwsginginx phục vụ Django trong thư mục con qua uWSGI
Bài học cơ bản là bạn chỉ nên cần phải cấu hình trang web (s-có sẵn) của bạn để đạt được điều này. Bây giờ tôi đã cố gắng hoán vị khác nhau của
server {
listen 80;
server_name www.example.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /path/to/project;
}
location /project/ {
root /path/to/project;
include /etc/nginx/uwsgi_params;
uwsgi_param SCRIPT_NAME /project;
uwsgi_modifier1 30;
uwsgi_param PATH_INFO "$1";
uwsgi_pass unix:/tmp/project.sock;
}}
Tất cả mọi thứ chạy một cách hoàn hảo khi tôi xác định vị trí là "/" (và loại bỏ SCRIPT_NAME, modifier1, PATH_INFO và rễ không quan trọng. Nhưng cố gắng sử dụng một thư mục con luôn dẫn đến trang không tìm thấy (404):.?
Request URL: http://www.example.com/project/project
(chỉnh sửa) nó thêm một thư mục để yêu cầu gì tôi không tìm ra
(thử forced_script_name - should't phải sử dụng này và cung cấp khác các loại nhức đầu - và cài đặt cấu hình uwsgi)
EDIT:
location /project/ {
root /path/to/project;
include /etc/nginx/uwsgi_params;
uwsgi_param SCRIPT_NAME /project;
uwsgi_pass unix:/tmp/project.sock;
}
Không làm việc ... Các ổ cắm là có và các công trình khi tôi cấu hình cho/- Tôi chỉ không thể nhìn thấy những gì tôi đang mất tích.
UPDATE:
location ~ /project(?<path_info>/.*|$) {
include /etc/nginx/uwsgi_params;
uwsgi_pass unix:/tmp/project.sock;
uwsgi_param PATH_INFO $path_info;
uwsgi_param SCRIPT_NAME /project;
}
này tải lên trang web nhưng tất cả các liên kết trỏ đến http://example.com/link/to/something thay vì http://example.com/project/link/to/something
django 1.9.2, uwsgi 2.07-debian (chạy trên máy chủ ubuntu 15.10) – Bjorn