Por que esse proxypass afeta todo o domínio?

1

Estou executando o Apache e tenho um arquivo .conf como site-enabled no apache, conforme abaixo.

<Virtualhost blog.example.com:80>
  ServerName blog.example.com
  ServerAdmin [email protected]
  ProxyRequests Off
  ProxyPass        /phpmyadmin !
  ProxyPass        /  http://localhost:2368/
  ProxyPassReverse /  http://localhost:2368/
</Virtualhost>

Como você pode ver, só quero que os hits para blog.example.com sejam processados pelo comando ProxyPass. No entanto, ele está realmente afetando todos os outros domínios example.com , other.example.com .

Estou faltando alguma coisa aqui?

Se é assim que o ProxyPass funciona, existe alguma maneira de dizer a ele para ignorar arquivos físicos e diretórios se ele detectar um?

Outros sites ativados (apenas um site é executado em ruby, o restante segue o primeiro formulário):

<VirtualHost other.example.com:80>
  ServerName other.example.com
  ServerAdmin [email protected]
  DocumentRoot /var/www/html/other
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


<Virtualhost other2.example.com:80>
  ServerName other2.example.com
  ServerAdmin [email protected]

  DocumentRoot /var/www/html/rails/other2/public
  <Directory /var/www/html/rails/other2/public>
  AllowOverride all
  Options -MultiViews
  Require all granted
  </Directory>
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
  PassengerUser www-data
  PassengerAppEnv production
  PassengerRuby /usr/local/rvm/gems/ruby-2.1.2/wrappers/ruby
</Virtualhost>
    
por resting 05.10.2014 / 20:40

2 respostas

1

não é uma prática recomendada para usar o FQDN na definição VirtualHost , isso pode causar problemas inesperados como este. Eu estou supondo que alguns dos nomes de host resolvem dentro do servidor para um endereço IP diferente daquele para o qual as solicitações são enviadas. Isso pode impedir que o Apache corresponda ao host virtual correto.

Portanto, a definição VirtualHost pode ser alterada como abaixo para todos os hosts virtuais, para que possamos ter certeza de que o Apache corresponda ao host virtual baseado em nome correto.

<VirtualHost *:80> 
     or
<VirtualHost [insert public IP here]:80>

Outro ponto a ser observado é que, se você quiser que as solicitações para example.com sejam atendidas por um host virtual diferente do padrão, será necessária uma diretiva ServerAlias mydomain .

Esta página tem mais detalhes sobre como os hosts virtuais baseados em nome funcionam - link

    
por 05.10.2014 / 22:15
1

Ajuste suas configurações assim. Observe os curingas que defini para a diretiva VirtualHost . É uma prática recomendada apenas curinga ( * ) a diretiva VirtualHost . Também defino um ServerAlias , bem como & formatar as configurações para facilitar a leitura e ajudar na depuração de problemas como este. Além disso, eu defino a mod_proxy config para corresponder mais de perto a uma fórmula padrão que eu gosto de usar para essas coisas.

Além disso, verifique a saída da sua configuração de host virtual executando sudo apachectl -S para ver o que você pode ver.

<Virtualhost *:80>

  ServerName blog.example.com
  ServerAlias blog.example.com
  ServerAdmin [email protected]

  <IfModule mod_proxy.c>
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
      AddDefaultCharset off
      Order deny,allow
      Allow from all
    </Proxy>

    ProxyPass        /phpmyadmin !
    ProxyPass        /  http://localhost:2368/
    ProxyPassReverse /  http://localhost:2368/

  </IfModule>

</Virtualhost>

<VirtualHost *:80>

  ServerName other.example.com
  ServerAlias other.example.com
  ServerAdmin [email protected]

  DocumentRoot /var/www/html/other

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<Virtualhost *:80>

  ServerName other2.example.com
  ServerAlias other2.example.com
  ServerAdmin [email protected]

  DocumentRoot /var/www/html/rails/other2/public

  <Directory /var/www/html/rails/other2/public>
    AllowOverride all
    Options -MultiViews
    Require all granted
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

  PassengerUser www-data
  PassengerAppEnv production
  PassengerRuby /usr/local/rvm/gems/ruby-2.1.2/wrappers/ruby

</Virtualhost>
    
por 05.10.2014 / 22:24