我在 Ubuntu 20.04 上的 docker 中使用家庭助理 (HA)。HA 托管在端口 8123 上。HA 不支持子路径,即它托管在MYDOMAIN.duckdns.org:8123
而不是MYDOMAIN.duckdns.org:8123/ha
。我希望它可以通过 访问MYDOMAIN.duckdns.org/ha
。我想我需要使用 mod-rewrite 来实现这一点,但我不确定。Apache 在主操作系统上运行。任何帮助都将不胜感激。
附言:我知道端口转发和 dyn dns 正在运行,因为我目前可以通过 访问该网站MYDOMAIN.duckdns.org:8123
。我还有其他支持使用 访问子路径的服务ProxyPass
。
答案1
您需要代理而不是重写,因为您将连接发送到 Apache 以外的其他服务。
ProxyPass /ha/ http://MYDOMAIN.duckdns.org:8123/
ProxyPassReverse /ha/ http://MYDOMAIN.duckdns.org:8123/
看代理通行证。
答案2
我最终重定向MYDOMAIN.duckdns.org/ha
到ha.MYDOMAIN.duckdns.org
<VirtualHost MYDOMAIN.duckdns.org:80>
ServerName MYDOMAIN.duckdns.org
RedirectMatch /ha/(.*) https://MYDOMAIN.duckdns.org/$1
</VirtualHost>
<VirtualHost MYDOMAIN.duckdns.org:80>
ServerName ha.MYDOMAIN.duckdns.org
RedirectMatch /(.*) https://MYDOMAIN.duckdns.org/$1
</VirtualHost>
<VirtualHost MYDOMAIN.duckdns.org:80>
ServerName MYDOMAIN.duckdns.org
RedirectMatch /(.*) https://MYDOMAIN.duckdns.org/$1
</VirtualHost>
<VirtualHost _default_:443>
ServerName ha.MYDOMAIN.duckdns.org
SSLEngine On
SSLProxyEngine On
SSLCertificateFile <FILE>
SSLCertificateKeyFile <KEYFILE>
ProxyPreserveHost On
ProxyRequests off
RequestHeader set-X-Forwarded_proto "https"
ProxyPass / http://ha.MYDOMAIN.duckdns.org:8123/
ProxyPassReverse / http://ha.MYDOMAIN.duckdns.org/
</VirtualHost>
<VirtualHost _default_:443>
ServerName MYDOMAIN.duckdns.org
SSLProxyEngine On
SSLCertificateFile <ha_FILE>
SSLCertificateKeyFile <ha_KeyFILE>
RedirectMatch /ha(.*) https://ha.MYDOMAIN.duckdns.org:443$1
</VirtualHost>
<VirtualHost _default_:443>
ServerName MYDOMAIN.duckdns.org
SSLProxyEngine On
SSLCertificateFile <FILE>
SSLCertificateKeyFile <KeyFILE>
</VirtualHost>