如何在 Apache 后面配置 Phoenix Framework

How to configure Phoenix Framework behind Apache

我正在试用 Phoenix,出于我无法控制的原因,我需要通过 apache2 提供服务。

有一个 guide for serving Phoenix behind a proxy webserver 但它只给出了 nginx 的示例配置(如果可以的话我会使用它)。

所以我查看了 mod_proxy 的文档并将这两行添加到我的 VirtualHost:

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

我有默认的 Phoenix 应用程序 运行 在端口 4000 上处于开发模式。我尝试转到 https://example.com/back 结果是

Internal Server Error

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

我检查了我在 /var/log/apache2/error.log 的日志,没有与 GET /back 对应的错误消息,尽管 access.log 中有相应的条目。我提供的所有其他服务仍然运行良好。我在这里不知所措,有什么指示吗?

问题是双重的。

首先,需要启用代理子模块。

sudo a2enmod proxy_http && sudo service apache2 restart

导致我进行此修复的原因是在 apache2.conf 中启用了更高的日志级别:

LogLevel debug proxy:trace4

相关错误是 AH01144 (list of apache2 errors)。

其次,我需要一个反向代理

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