Nginx fastcgi problemas com django (double slashes in url?)

4

Estou implantando meu primeiro aplicativo django. Eu estou familiarizado com o nginx e o fastcgi de implementar o php-fpm. Não consigo obter python para reconhecer as URLs. Eu também estou em uma perda sobre como depurar isso ainda mais. Eu gostaria de soluções para este problema e dicas sobre a depuração de problemas fastcgi.

Atualmente, recebo uma página 404, independentemente do URL e, por algum motivo, uma barra dupla Para link

Page not found (404)
Request Method: GET
Request URL:    http://www.site.com/admin//

Meu urls.py da saída de depuração - que funciona no servidor dev.

Using the URLconf defined in ahrlty.urls, Django tried these URL patterns, in this order:
^listings/
^admin/
^accounts/login/$
^accounts/logout/$

minha configuração nginx

server {
       listen   80;
       server_name  beta.ahrlty.com;
       access_log  /home/ahrlty/ahrlty/logs/access.log;
       error_log  /home/ahrlty/ahrlty/logs/error.log;

       location /static/ {
               alias  /home/ahrlty/ahrlty/ahrlty/static/;
               break;
       }

       location /media/ {
               alias /usr/lib/python2.6/dist-packages/django/contrib/admin/media/;
               break;
       }

       location / {
               include /etc/nginx/fastcgi_params;
               fastcgi_pass 127.0.0.1:8001;
               break;
       }
}

e meu fastcgi_params

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        $fastcgi_script_name;
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;

fastcgi_param  PATH_INFO          $fastcgi_script_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

Por último, estou executando o fastcgi a partir da linha de comando com o manage.py do django.

python manage.py runfcgi method=threaded host=127.0.0.1 port=8080 pidfile=mysite.pid minspare=4 maxspare=30 daemonize=false

Estou com dificuldades para depurar este. Alguma coisa salta em alguém?

Notas

  • versão nginx: nginx / 0.7.62
  • tronco svn do Django rev 13013
por reconbot 22.04.2010 / 15:31

3 respostas

3

talvez dê uma olhada na documentação do django no link . a solução para meus problemas familiares (mas com o lighttpd) foi colocar

FORCE_SCRIPT_NAME=""

no meu settings.py. também dê

FORCE_SCRIPT_NAME="/"

uma tentativa!

    
por 24.04.2010 / 21:42
2

Sei que sair do SCRIPT_NAME me deu todos os tipos de problemas.

Meus fastcgi_params em produção e teste são:

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  PATH_INFO          $fastcgi_script_name;
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;

Tudo o mais é praticamente idêntico.

    
por 23.04.2010 / 01:25
2

Acabei de remover a string

fastcgi_param  SCRIPT_NAME  $fastcgi_script_name;

do meu arquivo de configuração do nginx, e sempre comece a trabalhar.

(nginx 0.7.65, Django 1.4)

    
por 28.06.2012 / 13:42