504 tempo limite do gateway ao acessar pelo nome do host, mas não pelo IP

2

Estou usando o Amazon EC2 com o Elastic Load Balancing. No meu aplicativo baseado na Web, os usuários finais se conectam ao app.myapp.com para obter um erro de tempo limite do gateway 504 ao executar determinadas operações, como converter um documento em PDF. Caso contrário, todo o aplicativo está funcionando normalmente.

No entanto, NÃO HÁ ERRO ao se conectar a um dos servidores diretamente por meio do endereço IP e executar a mesma ação. Nunca.

Nas entradas de DNS do meu registrador, eu já tinha feito um registro CNAME que aponta app.myapp.com para meu nome DNS do Elastic Load Balancer e, em seguida, minhas instâncias de servidor ficam atrás disso. Observação: o problema exato ainda ocorre mesmo quando eu paro de usar o balanceador de carga e aponto as configurações de DNS para que app.myapp.com vá diretamente para o endereço IP de um dos meus servidores.

O resultado é que essa operação, embora nenhuma URL seja codificada, expira quando você se conecta ao aplicativo por meio do nome do host > > mas nunca acontece quando se conecta via endereço IP. Ao longo de meses, tentei praticamente todas as etapas de solução de problemas que posso imaginar. Disposto a tentar qualquer coisa.

Resumo: o que poderia causar um tempo limite do gateway 504 ao fazer solicitações com um nome de host, mas não com um IP?

MINHA ENTRADA DE VHOSTS RELEVANTES:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/application/public
    <Directory /var/www/application/public>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            Allow from all
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} -s [OR]
            RewriteCond %{REQUEST_FILENAME} -l [OR]
            RewriteCond %{REQUEST_FILENAME} -d
            RewriteRule ^.*$ - [NC,L]
            RewriteRule ^.*$ index.php [NC,L]
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

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

    CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

    
por user3035649 19.12.2014 / 11:41

2 respostas

2

Adicione um atributo ServerName na sua configuração do VirtualHost com o nome do host que você deseja usar.

    
por 23.12.2014 / 06:23
0

Corrigido. Houve 2 problemas centrais trabalhando em conjunto que causaram isso ....

Problema principal 1: Ao olhar para o arquivo / etc / hosts do Ubuntu, embora eu não tenha memória alguma vez de editá-lo, o problema se tornou aparente. A terceira linha foi roteamento para um servidor inexistente e eu realmente gostaria de saber o porquê. Esta terceira linha foi removida:

127.0.0.1 localhost
127.0.1.1 ubuntu-server
42.139.126.191 app.myapp.com

Problema principal 2: O problema com o arquivo hosts acima não deve ser importante, já que todos os links são relativos. Mas por alguma razão, mesmo que a ferramenta de geração de PDF use apenas links relativos, há uma linha de código na qual você precisa especificar o domínio, e isso me alertou que em algum lugar dentro do código que estava sendo feito reescreve a URL completa que os hosts arquivo disse que existia em 42.139.126.191, embora, na realidade, nada existia nesse IP, e, portanto, o '504 tempo limite de gateway'.

Mais uma coisa que decidi fazer: Em vez de apenas remover a terceira linha problemática, uma nova terceira linha (veja abaixo) foi adicionada porque decidimos que não havia motivo para encaminhar o tráfego para o Servidor DNS apenas para esse servidor DNS apontar para o mesmo servidor do qual a solicitação foi enviada (por sinal, uma viagem internacional de ida e volta). O registrador que tem a autoridade de DNS - e o host que está em um país diferente realmente não faz sentido algum - então evite isso, se puder.

Então eu adicionei uma terceira linha diferente para contornar isso (mas eu provavelmente deveria deixar meu antigo registrador e usar o Route53 da Amazon de qualquer maneira):

127.0.0.1 localhost
127.0.1.1 ubuntu-server
127.0.0.1 app.myapp.com    
    
por 24.12.2014 / 08:01