PoolOfPeas
PoolOfPeas

Reputation: 443

How to configure Phoenix Framework behind Apache

I'm trying out Phoenix and for reasons beyond my control, I need it to be served through apache2.

There's a guide for serving Phoenix behind a proxy webserver but it only gives an example configuration for nginx (which I would be using if I could).

So I went to the documentation for mod_proxy and added these two lines to my VirtualHost:

<VirtualHost *:443>
...
LoadModule proxy_module modules/mod_proxy.so
ProxyPass /back http://www.example.com:4000 timeout=10
...
</VirtualHost>

I have the default Phoenix app running in development mode on port 4000. I tried going to https://example.com/back and the result is

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

I've checked my logs at /var/log/apache2/error.log and there is no error message corresponding to GET /back, although there IS a corresponding entry in access.log. All of the other things I'm serving are still working fine. I'm at a loss here, any pointers?

Upvotes: 2

Views: 1063

Answers (1)

PoolOfPeas
PoolOfPeas

Reputation: 443

The problem was twofold.

Firstly, proxy submodules needed to be enabled.

sudo a2enmod proxy_http && sudo service apache2 restart

What led me to this fix was enabling a higher log level in apache2.conf:

LogLevel debug proxy:trace4

The relevant error was AH01144 (list of apache2 errors).

Secondly, I needed a reverse proxy:

<VirtualHost *:443>
...
ProxyPass /back http://www.example.com:4000 timeout=10
ProxyPassReverse /back http://www.example.com:4000 timeout=10
...
</VirtualHost>

Upvotes: 2

Related Questions