Problemas com ProxyPass e ProxyPassReverse ao fazer proxy para localhost e uma porta TCP diferente

4

Eu estou tentando usar ProxyPass e ProxyPassReverse para solicitações de proxy através do Apache para outra instância do servidor que está vinculada ao localhost em uma porta TCP diferente que o Vhost existe (VHost está vinculado a: 80, quando o destino está vinculado a: 5000).

No entanto, recebo repetidamente HTTP 503 ao acessar o local.

De acordo com a documentação do ProxyPass ...

<VirtualHost *:80>
    ServerName apacheserver.domain.local
    DocumentRoot /var/www/redmine/public
    ErrorLog logs/redmine_error

    <Directory /var/www/redmine/public>
            Allow from all
            Options -MultiViews
            Order allow,deny
            AllowOverride all
    </Directory>
</VirtualHost>
PassengerTempDir /tmp/passenger

<Location /rhodecode>
  ProxyPass http://127.0.0.1:5000/rhodecode
  ProxyPassReverse http://127.0.0.1:5000/rhodecode
  SetEnvIf X-Url-Scheme https HTTPS=1
</Location>

Eu testei a vinculação do servidor alternativo ao endereço IP da interface e ocorreu o mesmo problema.

A solicitação de serviço do servidor é uma instância da pasta python: httpserver, e foi configurada para usar o sufixo / rodecode (como eu vi isso para ser mencionado em outros posts sobre o ProxyPass). A documentação do próprio projeto , Rhodecode, reporta para usar o acima.

O problema é persistente se eu segmentar outro servidor que está sendo exibido em uma porta diferente.

O ProxyPass permite o proxy para uma porta TCP diferente?

[atualização]

Eu não vou deletar isso, caso alguém encontre o mesmo problema.

Eu configurei um ErrorLog e, nesse ErrorLog, o seguinte erro foi relatado:

[Wed Nov 09 11:36:35 2011] [error] (13)Permission denied: proxy: HTTP: attempt to connect to 127.0.0.1:5000 (192.168.100.100) failed
[Wed Nov 09 11:36:35 2011] [error] ap_proxy_connect_backend disabling worker for (192.168.100.100)

Depois de mais algumas pesquisas, tentei definir o SELinux como permissivo ( echo 0 >/selinux/enforce ) e tente novamente.

Acontece que o SELinux booleano httpd_can_network_connect deve ser definido como 1 .

Para persistência na reinicialização:

setsebool -P httpd_can_network_connect=1

    
por mbrownnyc 09.11.2011 / 17:11

1 resposta

3

Uma maneira mais agradável de consertar isso (ter seu bolo e comê-lo) com relação ao SELinux é executar este comando para tornar os tipos httpd_t conscientes da porta que você está usando.

semanage port -a -p tcp -t http_port_t 5000

Você pode desativar esse booleano e ainda fazê-lo funcionar.

    
por 12.11.2011 / 22:45