Только что сам столкнулся с той же проблемой - оказалось, что ссылка, которую вы указали на ServerFault на Django change doc , была ключом к решению проблемы.
Django> 1.0 использует SCRIPT_NAME
и PATH_INFO
для маршрутизации URL-адресов, как объяснил документ. Поэтому я взял это и побежал с этим. Для проекта под названием «myproject», который вы хотите внедрить на mydomain.com/myproject/, попробуйте это.
location ~ /myproject/(.*)$ {
fastcgi_pass 127.0.0.1:8080;
fastcgi_param PATH_INFO /$1;
SCRIPT_NAME /myproject;
}
Остальные параметры fastcgi у меня есть в другом конфигурационном файле для всего сайта. Итак, ваш пример будет выглядеть примерно так:
server {
listen 8080;
server_name localhost;
location /myproject/ {
# host and port to fastcgi server
fastcgi_pass 127.0.0.1:3030;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME /myproject;
fastcgi_param PATH_INFO /$1;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
}
}
с тем же urls.py. Единственными проблемами, которые у меня были до сих пор, были незначительные проблемы с сохранением СУХОГО, например, где settings.py требует абсолютных URL-адресов, а Django не думает добавлять SCRIPT_NAME
в URL (например, settings.LOGIN_URL
, settings.MEDIA_URL
).
Это может быть очевидно, но также убедитесь, что у вас есть другое местоположение, которое указывает на ваши статические и административные носители.