3

我基本上想要完成的是让我的主网站运行一个用 Go 编写的 CMS。这将位于 www.example.com。

我还有用 PHP 编写的应用程序,位于目录中,例如 www.example.com/clients/

如何使用 Apache/PHP 为 example.com/clients 提供服务,同时使用 Go 内置 Web 服务器为 example.com 提供服务?

4

2 回答 2

4

Andrew Gerrand 有一篇关于 nginx的很好的博客文章,但原理与 Apache 相同。

您希望将 Apache 设置为 Go 应用程序传入请求的反向代理。对于 Apache,您想查看mod_proxy

于 2012-05-17T22:27:24.147 回答
4

通过mod_proxy在 Apache2 中,您可以将不同的路径代理到 localhost 或您的服务器可访问的其他任何地方的不同目的地,包括在您的本地网络中(如果您的服务器可以访问它)。

为此,您将使用ProxyPassApache2 Docs for ProxyPass,这是非常有用的阅读),如下例所示:

<VirtualHost *:80>
  ServerName some.example.host.xyz

  DocumentRoot /var/www/your-document-root

  Alias /clients/ /var/www/clients/
  ProxyPass /clients/ !
  ScriptAlias /something-using-cgi/ /var/www/cgi-stuff/
  ProxyPass /something-using-cgi/ !

  ProxyPreserveHost On
  ProxyPass / http://localhost:9876/
  ProxyPassReverse / http://localhost:9876/
  ProxyPass /elsewhere/ http://elsewhere.example.host.xyz:1234/
  ProxyPassReverse /elsewhere/ http://elsewhere.example.host.xyz:1234/
</VirtualHost>

您需要确保设置代理安全,以使外部用户也不能将您的反向代理用作正向代理。您可以ProxyRequests按照官方 Apache2 文档中的说明进行操作。我在服务器上执行此操作的方法是将其放入服务器范围的配置中(您应该自行验证这是否足够安全):

# disables forward proxy
ProxyRequests Off
于 2012-05-18T10:40:36.983 回答