端口 80 和 443 上的两个 HTTP 服务器

端口 80 和 443 上的两个 HTTP 服务器

我在我的家庭服务器上使用 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 服务器,您可以执行以下任一操作:

  1. 使用端口 80 上的第一台服务器设置反向代理,该服务器将转发进入https://my_host.no-ip.org/owncloud.
  2. https://my_host.no-ip.org/owncloud对进入的任何流量执行 301 转发https://my_host.no-ip.org:8081/
  3. https://my_host.no-ip.org/owncloud对to进行 URL 重写https://my_host.no-ip.org:8081/owncloud

在这些选项中,我会使用#1。有关如何执行此操作的详细信息,请参阅本文,标题为:将 Apache HTTPd 配置为反向代理 (mod_proxy)

常规步骤

  1. 打开httpd.conf位于目录中的文件<httpd_home>/conf
  2. 查找以下LoadModule指令并通过删除#行开头的 来取消注释它们。

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    
  3. 在 httpd.conf 的底部添加以下行以启用重新路由。

    ProxyPass /console http://localhost:8080/console
    ProxyPass /images http://localhost:8080/images
    ProxyPassreverse / http://localhost:8080/
    

相关内容