Apache-2.2

Apache2中的Mod-rewrite埠

  • March 15, 2021

我正在 Ubuntu 20.04 上的 docker 中使用家庭助理 (HA)。HA 託管在埠 8123 上。HA 不支持子路徑,即。它託管在MYDOMAIN.duckdns.org:8123而不是MYDOMAIN.duckdns.org:8123/ha. 我希望它可以通過MYDOMAIN.duckdns.org/ha. 我想我需要使用 mod-rewrite 來完成這個,但我不確定。Apache 在主作業系統上執行。任何幫助將非常感激。

PS。我知道有埠轉發和 dyn dns 工作,因為我目前可以通過MYDOMAIN.duckdns.org:8123. 我還有其他服務支持使用ProxyPass.

我最終重定向MYDOMAIN.duckdns.org/haha.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>

您需要代理而不是重寫,因為您將連接發送到與 Apache 不同的服務。

ProxyPass        /ha/ http://MYDOMAIN.duckdns.org:8123/
ProxyPassReverse /ha/ http://MYDOMAIN.duckdns.org:8123/

請參閱代理通行證

引用自:https://serverfault.com/questions/1056658