apache2 - 如何在 Apache 后面配置 Phoenix 框架

标签 apache2 elixir phoenix-framework mod-proxy

我正在尝试 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>

关于apache2 - 如何在 Apache 后面配置 Phoenix 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39566398/

相关文章:

Docker 容器在约 1 分钟后被终止

html - Cloud9自定义404页面

php - 如果我的 PHP 脚本在那里写入,那么/var/tmp/mysite 的权限应该是什么?

elixir - __struct__/1 未定义,无法扩展 struct Gazette.User

elixir - 如何使用 Ecto 构建 WHERE IN 数组子句?

elixir - 在 Phoenix 中实现“记住我”

apache - 我如何将经过身份验证的用户从 apache kerberos 传递到 tomcat GET 请求

image - Docker 构建在 mkdir 上失败

pattern-matching - 针对空 map 的模式匹配功能

SSL: :certify: ssl_handshake.erl:1507: fatal error :证书过期