我在我的家庭服务器上使用 Apache,其中一个主要应用程序是 OwnCloud。因此,要从互联网访问它,我使用 URL ->
https://my_host.no-ip.org/owncloud
我在同一服务器上使用另一个 HTTP 应用程序。该应用程序有自己的 HTTP 服务器,并且不使用 Apache。所以此时它使用8080和8081作为HTTP/HTTPS端口。问题是访问第二个应用程序,例如当我在酒店(有 WiFi 服务)但位于代理服务器后面时。 90% 的此类服务器仅代理端口 80 和 443,不代理其他端口,包括 SOCS。由于我的 ISP 仅提供一个 IP 地址,因此我无法将访问权限拆分为两个不同的 IP 地址。所以我的问题是。有没有办法使用 URL 访问我的第二个应用程序:
https://my_host.no-ip.org
并通过 URL 访问 owncloud:
https://my_host.no-ip.org/owncloud
两者都在标准端口 443 上。此时,第一个 URL 仅重定向到位于 Internet 某个位置的另一个 WEB 站点,对我来说没有必要。
任何想法?有可能吗?
答案1
如果您继续在端口 8080 和 8081 上运行第二个 Apache 服务器,您可以执行以下任一操作:
- 使用端口 80 上的第一台服务器设置反向代理,该服务器将转发进入
https://my_host.no-ip.org/owncloud
. https://my_host.no-ip.org/owncloud
对进入的任何流量执行 301 转发https://my_host.no-ip.org:8081/
。https://my_host.no-ip.org/owncloud
对to进行 URL 重写https://my_host.no-ip.org:8081/owncloud
。
在这些选项中,我会使用#1。有关如何执行此操作的详细信息,请参阅本文,标题为:将 Apache HTTPd 配置为反向代理 (mod_proxy)。
常规步骤
- 打开
httpd.conf
位于目录中的文件<httpd_home>/conf
。 查找以下
LoadModule
指令并通过删除#
行开头的 来取消注释它们。LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so
在 httpd.conf 的底部添加以下行以启用重新路由。
ProxyPass /console http://localhost:8080/console ProxyPass /images http://localhost:8080/images ProxyPassreverse / http://localhost:8080/