Apache2 ReverseProxy для mattermost

Я в настоящее время пытаюсь установить a mattermost-1.1.1 экземпляр на Ubuntu LTS 14, который был довольно прост. Я настроил сервис для слушания 127.0.0.1:8065 только и хочу сделать ReverseProxy через Apache2 на том же хосте с помощью этой конфигурации

<VirtualHost *:443>
  SSLEngine on
  SSLProtocol all -SSLv2
  SSLHonorCipherOrder on
  SSLCipherSuite "ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH"
  Header add Strict-Transport-Security: "max-age=15768000;includeSubdomains"
  SSLCompression Off
  SSLCertificateChainFile /etc/apache2/ssl/zcore_ORG_chain.pem
  SSLCertificateFile      /etc/apache2/ssl/zcore.intra.pem
  SSLCertificateKeyFile   /etc/apache2/ssl/zcore.intra.key.pem
  ServerName mattermost.zcore.intra
  ServerSignature Off
  ServerAlias mattermost
  ProxyPreserveHost On
  AllowEncodedSlashes NoDecode

  <Location />
    Require all granted
    ProxyPass http://mattermost.zcore.intra:8065
    ProxyPassReverse http://mattermost.zcore.intra:8065
  </Location>

  LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded
  ErrorLog /var/log/apache2/mattermost.zcore.intra/mattermost.zcore.intra_error.log
  CustomLog /var/log/apache2/mattermost.zcore.intra/mattermost.zcore.intra_forwarded.log common_forwarded
  CustomLog /var/log/apache2/mattermost.zcore.intra/mattermost.zcore.intra_access.log combined env=!dontlog
  CustomLog /var/log/apache2/mattermost.zcore.intra/mattermost.zcore.intra.log combined
</VirtualHost>
<VirtualHost *:80>
  ServerName mattermost.zcore.intra
  Redirect permanent / https://mattermost.zcore.intra
</VirtualHost>

Перенаправление хорошо работает до сих пор, но после того, как несколько секунд вошли в систему, я отобразил следующее сообщение на сайте:

Мы не можем достигнуть услуг Mattermost. Сервис может снизиться или неправильно сконфигурирован. Свяжитесь с администратором, чтобы удостовериться, что порт WebSocket настроен правильно.

[2015/10/28 10:52:00 CET] [EROR] websocket connect err: websocket: could not find connection header with token 'upgrade'
[2015/10/28 10:52:00 CET] [EROR] /api/v1/websocket:connect code=500 rid=emfn13fxjtnhpgp6nfrmoqdupw uid=f18pts15ib8xz8s4igctmm4ofa ip=192.168.3.128 Failed to upgrade websocket connection [details: ]

Я предполагаю, что существует что-то отсутствующее в моей конфигурации.

2
задан 28 October 2015 в 13:32

2 ответа

После целой ночи рытья я нашел конфигурацию, которая хорошо работает для меня.

<VirtualHost *:443>
  SSLEngine on
  SSLProtocol all -SSLv2
  SSLHonorCipherOrder on
  SSLCipherSuite "ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH"
  Header add Strict-Transport-Security: "max-age=15768000;includeSubdomains"
  SSLCompression Off
  SSLCertificateChainFile /etc/apache2/ssl/zcore_ORG_chain.pem
  SSLCertificateFile      /etc/apache2/ssl/zcore.intra.pem
  SSLCertificateKeyFile   /etc/apache2/ssl/zcore.intra.key.pem
  ServerName mattermost.zcore.intra
  ServerSignature Off
  ServerAlias mattermost

  ProxyPreserveHost On
  ProxyRequests Off

  RewriteEngine on
  RewriteCond %{REQUEST_URI} ^/api/v1/websocket [NC,OR]
  RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
  RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
  RewriteRule .* ws://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L]
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule .* http://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L]
  RequestHeader set X-Forwarded-Proto "https"

  <Location /api/v1/websocket>
    Require all granted
    ProxyPassReverse http://127.0.0.1:8065
    ProxyPassReverseCookieDomain 127.0.0.1 mattermost.zcore.intra
  </Location>
  <Location />
    Require all granted
    ProxyPassReverse http://127.0.0.1:8065
    ProxyPassReverseCookieDomain 127.0.0.1 mattermost zcore.intra
  </Location>

  LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded
  ErrorLog /var/log/apache2/mattermost.zcore.intra/mattermost.zcore.intra_error.log
  CustomLog /var/log/apache2/mattermost.zcore.intra/mattermost.zcore.intra_forwarded.log common_forwarded
  CustomLog /var/log/apache2/mattermost.zcore.intra/mattermost.zcore.intra_access.log combined env=!dontlog
  CustomLog /var/log/apache2/mattermost.zcore.intra/mattermost.zcore.intra.log combined
</VirtualHost>
<VirtualHost *:80>
  ServerName mattermost.zcore.intra
  Redirect permanent / https://mattermost.zcore.intra
</VirtualHost>
1
ответ дан 2 December 2019 в 03:51

также необходимо сделать sudo a2enmod headers proxy_wstunnel

, Моя конфигурация Прокси похожа на следование:

ProxyPreserveHost On
ProxyRequests Off

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/api/v3/users/websocket [NC,OR]
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://127.0.0.1:11080%{REQUEST_URI} [P,QSA,L]
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .* http://127.0.0.1:11080%{REQUEST_URI} [P,QSA,L]
RequestHeader set X-Forwarded-Proto "https"

  <Location /api/v3/users/websocket>
    Require all granted
    ProxyPassReverse ws://127.0.0.1:11080/api/v3/users/websocket
    ProxyPassReverseCookieDomain 127.0.0.1 xxxxxx.xx
  </Location>

  <Location />
    Require all granted
    ProxyPassReverse https://127.0.0.1:11080/
    ProxyPassReverseCookieDomain 127.0.0.1 xxxxxx.xx
  </Location>
1
ответ дан 2 December 2019 в 03:51

Другие вопросы по тегам:

Похожие вопросы: