Назад | Перейти на главную страницу

Обратный прокси-сервер Apache в контейнер докеров

У меня есть веб-сайт, работающий в контейнере докеров, и я создал VirtualHost на хосте apache, который выполняет обратный прокси-сервер для контейнера (на порту хоста 8280). Так что я:

<VirtualHost *:443>
    ServerName www.example.com
    DirectoryIndex index.php index.html
    SetOutputFilter SUBSTITUTE,DEFLATE

    ProxyPass / http://localname:8280/
    ProxyPassReverse / http://localname:8280/

    Substitute "s|http://localname:8280/|https://www.example.com/|i"

    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
    SSLCertificateKeyFile /path-to/privkey.pem
    SSLCertificateFile /path-to/cert.pem
    SSLCertificateChainFile /path-to/chain.pem

    <Proxy *>
        Order deny,allow
        Allow from all
        Allow from localhost
    </Proxy>
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias www.example.com

    Redirect permanent / https://www.example.com/
</VirtualHost>

Прокси работает хорошо, у меня есть ответ при записи www.example.com в браузере, но у меня есть все ссылки, указывающие на http: // локальное имя: 8280 (как показано в консоли браузера) и ошибка смешанного содержимого, поэтому я поставил директиву Substitute, но она не работает.

Я использую конфигурацию для mod_substitute из документации apache.

https://httpd.apache.org/docs/2.4/mod/mod_substitute.html

Но это не работает, ничего не меняется. Контейнер докера основан на образе bitnami / apache с конфигурацией по умолчанию.

Любая помощь будет оценена.

Хорошо, я сам нашел ответ. Вам нужно только добавить следующую строку поверх директивы Substitute:

AddOutputFilterByType SUBSTITUTE text/html