【发布时间】:2014-01-26 22:41:17
【问题描述】:
我有一台服务器,其中运行着多个服务。其中之一可通过“https://www.foo.bar”等域名访问。另外两个服务正在特定端口上运行。因此可以通过“https://www.foo.bar:1234”访问它们。 它是否能够以特定方式配置 apache2 服务器,因此它始终使用端口 443,但使用不同的 URL,如“https://www.foo.bar/service1”?
【问题讨论】:
我有一台服务器,其中运行着多个服务。其中之一可通过“https://www.foo.bar”等域名访问。另外两个服务正在特定端口上运行。因此可以通过“https://www.foo.bar:1234”访问它们。 它是否能够以特定方式配置 apache2 服务器,因此它始终使用端口 443,但使用不同的 URL,如“https://www.foo.bar/service1”?
【问题讨论】:
试试ProxyPass,您所描述的是一种称为反向代理的设置的特殊情况:您的httpd 将请求转发给其他服务并将答案返回给客户端。 (在您的情况下,另一个服务恰好在同一台机器上运行,但它不需要。一种简单的后端负载平衡也可以通过这种方式完成。)
<Location /service1>
ProxyPass https://localhost:1234
ProxyPassReverse https://localhost:1234
</Location>
请注意,您的其他服务需要对这种设置提供一些基本支持:如果它返回带有链接的 HTML 页面,则不能再假定 https://www.foo.bar:1234/foo/bar.html 是告诉客户端的正确 URL。 httpd 不会查看返回的内容并为您重写。
【讨论】: