Adam
Adam

Reputation: 3128

What are my options to deploy Go applications alongside PHP applications?

What I'm basically trying to accomplish is having my main website running a CMS written in Go. This will be located at www.example.com.

I also have applications written in PHP located in directories, such as www.example.com/clients/

How can I serve example.com/clients using Apache/PHP while serving example.com using Go built-in web server?

Upvotes: 3

Views: 722

Answers (2)

Emmaly
Emmaly

Reputation: 863

Via mod_proxy in Apache2, you can proxy different paths into different destinations at localhost or anywhere else accessible by your server, including within your local network (if your server can access it).

For this you would use ProxyPass (Apache2 Docs for ProxyPass, which is very useful reading) like the example below:

<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>

You'll want to be sure that you set your proxy security such that external users can't use your reverse proxy as a forward proxy, too. You can do that via ProxyRequests as described in the official Apache2 docs. The way I did this on a server is to put this in your server-wide config (you should verify on your own that this is secure enough):

# disables forward proxy
ProxyRequests Off

Upvotes: 4

Jesse
Jesse

Reputation: 2908

Andrew Gerrand has a good blog post about this for nginx but the principle is the same for Apache.

You want to set up Apache as a reverse proxy for requests coming in for the Go application. For Apache you want to look at mod_proxy

Upvotes: 4

Related Questions