我基本上试图完成的是让我的主要网站运行一个用Go编写的CMS。 这将位于www.example.com。
我也使用PHP编写的应用程序位于目录中,例如www.example.com/clients/
使用Go内置的Web服务器服务example.com时,如何使用Apache / PHP为example.com/clients服务?
通过Apache2中的mod_proxy
,您可以将不同的路径代理到本地主机或服务器可以访问的任何地方,包括在本地网络中(如果您的服务器可以访问它的话)。
为此,您可以使用ProxyPass
( Apache2 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
安德鲁·杰兰德(Andrew Gerrand)对于nginx有一个很好的博客文章 ,但是Apache的原理是一样的。
您希望将Apache设置为针对Go应用程序进入请求的反向代理。 对于Apache你想看看mod_proxy