Django reescreve a URL como endereço IP no navegador - por quê?

5

Estou usando o django, o nginx e o apache. Quando eu acesso meu site com um URL (por exemplo, link ), o que aparece no endereço do meu navegador é o endereço IP com o admin anexado (por exemplo, link . Quando eu acesso o site por IP, ele é redirecionado como esperado pelo urls.py do django (por exemplo, link - > link )

Gostaria que o nome do URL agisse da mesma forma que o IP. Ou seja, se o URL for para uma nova exibição, o host no endereço do navegador deverá permanecer o mesmo e não será alterado para o endereço IP. Onde devo estar procurando consertar isso?

Meus arquivos:

; cpa.com (apache)
NameVirtualHost *:8080

<VirtualHost *:8080>

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/htm

DocumentRoot /path/to/root
ServerName www.foo.com

<IfModule mod_rpaf.c>
    RPAFenable On
    RPAFsethostname On
    RPAFproxy_ips 127.0.0.1
</IfModule>

<Directory /public/static>
    AllowOverride None
    AddHandler mod_python .py
    PythonHandler mod_python.publisher
</Directory>

Alias / /dj
<Location />
    SetHandler python-program
      PythonPath "['/usr/lib/python2.5/site-packages/django', '/usr/lib/python2.5/site-packages/django/forms'] + sys.path"
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE dj.settings
    PythonDebug On
</Location>

</VirtualHost>

;

; ports.conf (apache)
Listen 127.0.0.1:8080

;

; cpa.conf (nginx)
server { 

listen       80;
server_name  www.foo.com;

location /static {
    root   /var/public;
    index  index.html;
}

location /cpa/js {
    root   /var/public/js;
}

location /cpa/css {
    root   /var/public/css;
}

location /djmedia {
    alias "/usr/lib/python2.5/site-packages/django/contrib/admin/media/";
}

location / {
include /etc/nginx/proxy.conf;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass   http://127.0.0.1:8080;
}
}

;

; proxy.conf (nginx)

proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      500;
proxy_buffers           32 4k;
    
por Mitch 23.08.2010 / 06:39

2 respostas

1

É provavelmente a configuração do seu mod_rpaf, eu acho que a linha "RPAFsethostname On" em particular.

Eu não estou totalmente confiante porque depois de googlar por 10 minutos está claro que há pouca ou nenhuma documentação em qualquer lugar no mod_rpaf. Parece ser o tipo de coisa que você só ouviria em um punhado de postagens em blogs "eu e minha fantasia". Ele resolve um problema que você pode facilmente resolver em sua camada de django e não executar algum módulo de mistério do apache por algum cara que você leu em algum post de blog.

É realmente abordado no capítulo de middleware do livro: link

    
por 23.08.2010 / 18:01
-1

Por que usar nginx + apache + mod_python? Sua pilha é louca e o mod_python é terrivelmente lento. Procure remover o apache e executar um servidor wsgi: eu recomendo o uwsgi. Eu uso com nginx e django e é maravilhoso!

link

Acho que você está complicando demais as coisas.

    
por 09.03.2013 / 18:37