我使用 Apache 通过 SSL 证书在家庭服务器的 443 端口上为全世界的多个网站提供服务。昨晚我安装了一个 Linux 二进制文件,它只通过配置文件定义的端口为网站提供服务。我无法让 Apache 直接为网站提供服务。
因此该网站托管于http://127.0.0.1:8081/但我想将其隐藏在 443 上的 Apache 后面,以便我可以通过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
您的重写规则 a) 有错误的目标并且 2) 是多余的。
RewriteRule 旨在[P]
用作选择到 ProxyPass,而不是与其一起。[P] 规则的重写目标将是远程 Web 应用程序 URL,而不是本地 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 *>
阻止也是不必要的,因为它只适用于向前代理,其中客户端指定代理目的地(您已禁用)。