Redirecionamento incorreto do Django do nginx / configuração incorreta do proxy HTTPS do Apache

1

Sou relativamente novo no desenvolvimento da web, por isso sei que estou cometendo um erro inicial com a configuração do meu servidor. Eu tenho um servidor nginx sentado na frente de um servidor Apache que está atendendo a solicitações do Django. Eu tenho certas visões que requerem login (através do @login_required decorator) e o Django automaticamente redireciona o usuário para / accounts / login / se eles acessarem uma dessas visualizações sem estar logado. Isso funciona bem com http, mas com https ele me redireciona para o endereço IP local do Apache. Por exemplo, em vez de ser redirecionado para o link , sou redirecionado para link . Solicitações HTTPS normais funcionam bem. Eu sei que meu nginx e / ou apache estão mal configurados, mas não sei como.

Aqui está uma parte do meu arquivo de configuração do nginx:

server {
 listen   80;
 server_name  staging.example.com;
 root /path/to/staging/example.com/public_html/; 

 try_files $uri @django;

 #set your default location
 location @django  {
  proxy_pass         http://127.0.0.1:8080;
 }
 ...
}

server {

 listen 443;
 ssl on;
 ssl_certificate /path/to/cert-staging.example.com.crt;
 ssl_certificate_key /path/to/staging.example.com.key;
 server_name staging.example.com;

 try_files $uri @django;

 #set your default location
 location @django  {
   proxy_pass         http://127.0.0.1:8080;
   proxy_set_header   X-Forwarded-Protocol https;
 }
 ...
}

Aqui está uma parte do meu arquivo Apache:

NameVirtualHost * 
Listen 127.0.0.1:8080

<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>
    
por mathew 04.12.2011 / 21:17

1 resposta

1

Bem, isso levou uma eternidade para consertar. Eu mudei isso no meu nginx ports.conf:

proxy_redirect off;

para isso:

proxy_redirect http://localhost:8080/ /

É meio que me assusta que todos os exemplos que usei pareçam ter proxy_redirect off, mas acho que vou continuar assim até que alguém possa fornecer uma resposta melhor.

    
por 07.12.2011 / 14:54