O Apache redireciona para uma porta diferente para cada diretório

1

Eu configurei o host virtual Apache para ser executado na porta 8000 e na frente do Apache eu tenho o Varnish na porta 80. O problema é se eu colar isso no meu navegador:

example.com/a_directory

Eu sou redirecionado para example.com:8000/a_directory

Não consigo conectar o erro. No arquivo de configuração eu tenho isso:

<VirtualHost *:8000>
    ServerAdmin [email protected]

    DocumentRoot /var/www
    DirectoryIndex index.php index.html index.htm 

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /var/www>
        AllowOverride All
    </Directory>

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

</VirtualHost>
    
por rtacconi 28.11.2011 / 15:07

1 resposta

1

Isto é quase certamente devido a redirecionamentos auto-referenciais, por exemplo, quando uma barra final está faltando em uma solicitação de diretório. Em tais casos, na ausência de uma diretiva ServerName, o Apache usará a porta na qual a solicitação entrou - no seu caso, 8000. No Apache 2.x, a diretiva ServerName suporta um especificador de porta que é usado para criar redirecionamentos. Dos documentos do Apache:

The ServerName directive sets the request scheme, hostname and port that the server uses to identify itself. This is used when creating redirection URLs.

No seu bloco vhost, adicione algo como (obviamente, mude para o seu ambiente) ServerName www.foo.com:80, que deve informar ao Apache para construir esses redirecionamentos usando a porta do proxy upstream em oposição à porta que está escutando.

Consulte o link para obter mais informações sobre esta diretiva.

    
por 29.11.2011 / 03:50