我正在尝试使用 unix 套接字在 Apache 2.4.7 中设置 ProxyPass 到 puma 服务器的 Rails 应用程序。我不断收到 500 内部错误。当我检查 apache 日志时,我收到以下消息:
没有协议处理程序对 URL / 有效。如果您使用的是 mod_proxy 的 DSO 版本,请确保使用 LoadModule 将代理子模块包含在配置中。
这是我在 apache 中的代理配置
ProxyPass / unix:///home/rails/rp/tmp/sockets/puma.sock|http://127.0.0.1/
ProxyPassReverse / unix:///home/rails/rp/tmp/sockets/puma.sock|http://127.0.0.1/
如果我像这样在常规 tcp 端口上设置代理通行证,它就可以正常工作。
ProxyPass / http://127.0.0.1:9292
ProxyPassReverse / http://127.0.0.1:9292
感谢任何帮助,如果您需要更多信息,请告诉我。
一般来说,通过 unix 套接字检查 http 服务器应用程序的反向代理有一些要点:
- 使用以下命令检查 Apache 是否已加载所需模块(proxy 和 http_proxy)
apachectl -M
command
- 确保套接字路径可访问
www-data
用户(默认的apache用户)
- 使用以下命令检查在 unix 套接字上运行应用程序的正确性:
curl --unix-socket /var/www/app/socket/path -XGET http:/someMethod
- 检查一下
ProxyPreserveHost On
已经存在于您的虚拟主机文件中并正确设置套接字地址(如unix:/var/www/path/to/your/socket
)并在管道正确标记路径之后(如|http://127.0.0.1/what/ever
)
- 确保两者
ProxyPassReverse
and ProxyPass
设置正确
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)