
Я использую Apache для обслуживания нескольких сайтов в мире на моем домашнем сервере на порту 443 с использованием SSL-сертификата. Вчера вечером я установил бинарный файл Linux, который обслуживает сайт только на порту, определенном в его конфигурационном файле. Я не могу заставить Apache обслуживать сайт напрямую.
Итак, этот сайт размещен наhttp://127.0.0.1:8081/но я хотел бы скрыть его за Apache через 443, чтобы я мог получить к нему доступ черезhttps://myserver.duckdns.org/webapp/
Я пробовал это в файле конфигурации моего сайта, но это не сработало:
ProxyRequests off
<Proxy *>
allow from all
</Proxy>
RewriteEngine On
RewriteRule ^/(.*) /webapp/$1 [P]
<Location /webapp/>
ProxyPass http://127.0.0.1:8081/
ProxyPassReverse http://127.0.0.1:8081/
</Location>
Есть идеи, как это сделать?
Я думал, что смогу сделать это с помощью ProxyPass и RewriteRules, но, похоже, у меня не получается заставить это работать должным образом.
Большое спасибо заранее!
решение1
Ваши правила переписывания а) имеют неправильную цель и 2) являются избыточными.
RewriteRule [P]
предназначен для использования в качествеальтернативав ProxyPass, а не вместе с ним. Местом назначения перезаписи правила [P] будет URL удаленного веб-приложения, а не локального. Например, можно использовать это:
RewriteRule ^/webapp/(.*) http://127.0.0.1:8081/$1 [P]
илиэтот:
ProxyPass /webapp/ http://127.0.0.1:8081/
илиэтот:
<Location /webapp/>
ProxyPass http://127.0.0.1:8081/
</Location>
(Примечание: документация Apache рекомендует использовать ProxyPass, когда это возможно.)
Ваш <Proxy *>
блок также не нужен, поскольку он применяется только квпередпроксирование, при котором клиент указывает место назначения прокси-сервера (которое вы отключили).