Acabei de passar pelo mesmo problema: o link que você forneceu para o Django alterar o documento foi a chave para resolver o problema.
Django > 1.0 usa SCRIPT_NAME
e PATH_INFO
para rotear URLs, conforme o documento explicou. Então peguei isso e corri com ele. Para um projeto chamado 'myproject', que você gostaria de fazer root em mydomain.com/myproject/, tente isso.
location ~ /myproject/(.*)$ {
fastcgi_pass 127.0.0.1:8080;
fastcgi_param PATH_INFO /$1;
SCRIPT_NAME /myproject;
}
O resto dos fastcgi params que eu tenho em outro arquivo de configuração para todo o site. Então, seu exemplo seria algo como
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;
}
}
com o mesmo urls.py. Os únicos problemas que tive até agora foram pequenos problemas em manter DRY, por exemplo, onde settings.py requer URLs absolutos e o Django não pensa em preceder o SCRIPT_NAME
no URL (pense em settings.LOGIN_URL
, settings.MEDIA_URL
).
Isso pode ser óbvio, mas também certifique-se de ter outro local que aponte para sua mídia estática e administrativa.