Cockpit: Proxy sobre Apache dando páginas em branco

Criado em 24 fev. 2018  ·  8Comentários  ·  Fonte: cockpit-project/cockpit

Ei pessoal,

Eu configurei um Apache 2.4 como descrito aqui: https://github.com/cockpit-project/cockpit/wiki/Proxying-Cockpit-over-Apache-with-LetsEncrypt

Infelizmente, posso ver alguns problemas estranhos:

Comportamento

  1. A página de login "parece" ok. Mas há um erro de console em relação ao mapa de origem.

  2. Depois de inserir os dados de login

    • No console JS, uma conexão com wss: // something / cockpit / socket é tentada.
    • Está relacionado a cockpit.js: 293: 24.
    • A página fica completamente em branco.
    • Todas as soluções / discussão em # 5934 parecem não ajudar.

Em formação

SO: CentOS 7.4
httpd: httpd-2.4.6-67.el7.centos.6.x86_64
cockpit: cockpit-ws-157-1.el7.centos.x86_64

Se necessário, posso fornecer informações adicionais e você também pode me contatar via IRC às vezes.

Cumprimentos,
Daniel

bug question

Comentários muito úteis

Aqui está a configuração completa que me fez trabalhar com proxy no Apache sem usar um host virtual. Usei o nome cockpit-new porque os documentos dizem que cockpit e cockpit + são reservados.

/etc/cockpit/cockpit.conf

[Serviço de internet]
Origins = https://MYDOMAIN.COM http://MYDOMAIN.COM https: // localhost : 9090 http: // localhost : 9090
ProtocolHeader = X-Forwarded-Proto
AllowUnencrypted = true
UrlRoot = / cockpit-new /

/etc/apache2/apache2.conf

ProxyPass / cockpit-new / cockpit / socket ws: // localhost: 9090 / cockpit-new / cockpit / socket
ProxyPassReverse / cockpit-new / cockpit / socket ws: // localhost: 9090 / cockpit-new / cockpit / socket

ProxyPass / cockpit-new / http: // localhost : 9090 / cockpit-new /
ProxyPassReverse / cockpit-new / http: // localhost : 9090 / cockpit-new /

RequestHeader definiu X-Forwarded-Proto "https"
RequestHeader definiu X-Forwarded-Port "443"

Redirecionar permanente / novo cockpit / novo cockpit /
ProxyVia On

Todos 8 comentários

Como seu proxy reverso é configurado para o Cockpit? O meu está configurado para ir para https://www.domain.com/manage/ em vez de https://www.domain.com : 9090. Eu tive problemas com o meu exibindo páginas em branco originalmente, mas comecei a trabalhar com as configurações abaixo.

Aqui está a configuração relevante do Apache que usei para fazê-lo funcionar.

<VirtualHost *:443>
        ServerName www.domain.com
        SSLEngine On
        SSLProxyEngine On
        SSLCertificateFile /etc/apache2/ssl/www.domain.com.crt
        SSLCertificateKeyFile /etc/apache2/ssl/www.domain.com.key
        SSLCertificateChainFile /etc/apache2/ssl/ca-chain.cert.pem
        ServerAdmin [email protected]
        DocumentRoot /var/www
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        RequestHeader unset X-Forwarded-Proto
        RequestHeader set X-Forwarded-Proto 'https' env=HTTPS
        ProxyPreserveHost On
        ProxyPass /manage https://localhost:9090/manage
        ProxyPassReverse /manage https://localhost:9090/manage
        <LocationMatch "^/manage/cockpi(t[^/]+|t)?/socket$">
            ProxyPassMatch "ws://localhost:9090/manage/cockpi$1/socket"
        </LocationMatch>
</VirtualHost>

Certifique-se de habilitar os módulos do Apache com a2enmod proxy proxy_wstunnel proxy_http ssl rewrite (que estou assumindo que você já fez a partir das instruções vinculadas).

Além disso, aqui está meu /etc/cockpit/cockpit.conf . Se você estiver configurando seu proxy reverso como o meu com um subsite, você deve criar o arquivo cockpit.conf e definir as configurações abaixo.

[WebService]
ProtocolHeader = X-Forwarded-Proto
UrlRoot=/manage/

Espero que ajude.

Ei, a configuração acima usará o certificado no cockpit. meu objetivo é encerrar o ssl no httpd já.

O problema parece que mesmo com AllowUnencrypted = true em /etc/cockpit/cockpit.conf cockpit tenta usar wss em vez de ws.

<VirtualHost www.domain.com:443>
  ServerName www.domain.com
  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/www.domain.com/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/www.domain.com/privkey.pem
  SSLCertificateChainFile /etc/letsencrypt/live/wwww.domain.com/chain.pem

# SSL Cipher
  SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
  SSLCipherSuite          ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
  SSLHonorCipherOrder     on
  SSLCompression          off

  ProxyPreserveHost On
  ProxyRequests Off

  # Proxy to your local cockpit instance
  ProxyPass / http://127.0.0.1:9090/
  ProxyPassReverse / http://127.0.0.1:9090/
  ProxyPass /cockpit/socket ws://127.0.0.1:9090/cockpit/socket
  ProxyPassReverse /cockpit/socket ws://127.0.0.1:9090/cockpit/socket

</VirtualHost>

Desculpe, devo ter mencionado que estou usando meu certificado de domínio no Cockpit seguindo estas instruções.

Quanto ao encerramento do SSL em httpd, não tenho certeza sobre isso. Apenas outro usuário final aqui :)

Sem problemas: +1: fico sempre feliz, se alguém cuidar. Toda ajuda é bem vinda.

Tive que consertar isso novamente após a reinstalação. No meu caso, precisava do seguinte /etc/cockpit/cockpit.conf

[WebService]
Origins = https://cockpit.mydomain http://127.0.0.1:9090
ProtocolHeader = X-Forwarded-Proto
AllowUnencrypted = true

Eu experimento exatamente o mesmo problema, mas tinha funcionado anteriormente. Eu configurei um certificado e domínio adequados do Let's Encrypt. Alguma ideia?

Aqui está a configuração completa que me fez trabalhar com proxy no Apache sem usar um host virtual. Usei o nome cockpit-new porque os documentos dizem que cockpit e cockpit + são reservados.

/etc/cockpit/cockpit.conf

[Serviço de internet]
Origins = https://MYDOMAIN.COM http://MYDOMAIN.COM https: // localhost : 9090 http: // localhost : 9090
ProtocolHeader = X-Forwarded-Proto
AllowUnencrypted = true
UrlRoot = / cockpit-new /

/etc/apache2/apache2.conf

ProxyPass / cockpit-new / cockpit / socket ws: // localhost: 9090 / cockpit-new / cockpit / socket
ProxyPassReverse / cockpit-new / cockpit / socket ws: // localhost: 9090 / cockpit-new / cockpit / socket

ProxyPass / cockpit-new / http: // localhost : 9090 / cockpit-new /
ProxyPassReverse / cockpit-new / http: // localhost : 9090 / cockpit-new /

RequestHeader definiu X-Forwarded-Proto "https"
RequestHeader definiu X-Forwarded-Port "443"

Redirecionar permanente / novo cockpit / novo cockpit /
ProxyVia On

Embora funcione para configurar o cockpit para ser executado em uma subpasta e funcione no Chrome, não funciona no Safari ou iOS devido a este erro

Recusou-se a conectar-se a wss: //your-site.com/cockpit-new/cockpit/socket porque não aparece na diretiva connect-src da Política de Segurança de Conteúdo.
cockpit.js: 365

Eu tentei substituir o cabeçalho por meio do Apache, mas sem sucesso ainda.

Esta página foi útil?
0 / 5 - 0 avaliações