Apache2 中的 Mod-rewrite 端口

Apache2 中的 Mod-rewrite 端口

我在 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/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>

相关内容