Плохое перенаправление докера Mattermost за обратным прокси-сервером apache2

Я пытаюсь установить док-версию Mattermost на свой Ubuntu 14.04 с apache2 версии 2.4.7.

Вот конфигурация mattermost-ssl.conf:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        ServerName www.my.website.fr
        ServerAlias website.fr
        DocumentRoot /home/www/www-website
  [...]
    <Proxy *>
        Require all granted
    </Proxy>
    ProxyPreserveHost On
    ProxyRequests Off
    RewriteEngine  on

    ProxyPass /mattermost http://localhost:8083
    ProxyPassReverse /mattermost http://localhost:8083

    RewriteCond %{REQUEST_URI} /api/v[0-9]+/(users/)?websocket [NC,OR]
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
    RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
    RewriteRule .* ws://127.0.0.1:8083%{REQUEST_URI} [P,QSA,L]

    <Location /home/www/www-soft/mattermost>
      Require all granted
      ProxyPass http://127.0.0.1:8083/
      ProxyPassReverse http://127.0.0.1:8083/
    </Location>
[...]
</VirtualHost>
</IfModule>

Сайт доступен, но на странице ничего не появляется, потому что я получил такие сообщения об ошибках (один пример среди нескольких других такой же формы):
Failed to load resource: the server responded with a status of 404 (Not Found) https://www.my.website.fr/static/main.9e27a2872d73987ea8ec.css

Вместо того, чтобы пытаться получить доступ к файлу по адресу:

https://www.my.website.fr/mattermost/static/main.9e27a2872d73987ea8ec.css (который существует, я проверял)

(Я заменил домен своего сайта на my.website.fr)

Есть ли очевидная причина, по которой прокси-сервер apache неправильно перенаправляется с префиксом /mattermost? Я что-то упускаю ?

Специальная страница в документации Mattermost не очень помогла мне решить эту проблему (https://docs.mattermost.com/install/config-apache2.html)


person Gabriel C    schedule 01.02.2021    source источник


Ответы (1)


Из документации Apache: https://httpd.apache.org/docs/2.4/mod/core.html#location

Директива ограничивает область применения вложенных директив URL-адресом.

Это означает, что вам нужно изменить:

<Location /home/www/www-soft/mattermost>
  Require all granted
  ProxyPass http://127.0.0.1:8083/
  ProxyPassReverse http://127.0.0.1:8083/
</Location>

to

<Location /mattermost>
  Require all granted
  ProxyPass http://127.0.0.1:8083/
  ProxyPassReverse http://127.0.0.1:8083/
</Location>

Поскольку ваш корень документа установлен на

DocumentRoot /home/www/www-website

Вы также используете proxypass для обработки запросов по тому же пути.

ProxyPass /mattermost http://localhost:8083
ProxyPassReverse /mattermost http://localhost:8083

Вам нужно выбрать, какое решение вы хотите реализовать: оба могут не работать вместе.

Наконец, вы также используете

ProxyPreserveHost On

что я не уверен, что это необходимо/работает, как вы думаете: см. https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypreservehost, чтобы узнать, действительно ли это требуется в вашей среде.

person Inc0    schedule 06.02.2021