通过systemctl运行haproxy与手动运行它不同.
>在手动启动时,一切正常.
>从systemctl开始,haproxy无法找到它代理的服务,并用503回答.
这是通过systemctl启动时的输出:
> sudo systemctl status -l haproxy.service haproxy.service - HAProxy Load Balancer Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled) Active: active (running) since Wed 2014-12-24 08:08:49 EST; 4min 59s ago Main PID: 20307 (haproxy) CGroup: /system.slice/haproxy.service └─20307 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid Dec 24 08:08:49 localhost.localdomain systemd[1]: Starting HAProxy Load Balancer... Dec 24 08:08:49 localhost.localdomain systemd[1]: Started HAProxy Load Balancer.
像这样,haproxy只为我的后端说503.
如果我现在停止haproxy服务,而是在命令行上手动运行它,如下所示:
sudo /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
它对我的服务器代理很好.
我已经通过yum安装了haproxy,我使用的配置非常简单:
# defaults above frontend main *:80 default_backend app backend app option httpclose option forwardfor server web1 127.0.0.1:8001
知道差异可能是什么?我已经尝试过运行它守护而不是.
这是使用systemctl运行时的日志:
Proxy app started. 127.0.0.1:44391 [24/Dec/2014:09:01:42.403] main app/web1 0/0/-1/-1/0 503 212 - - SC-- 0/0/0/0/3 0/0 "GET / HTTP/1.1"
这是手动运行时的日志:
Proxy app started. 127.0.0.1:44393 [24/Dec/2014:09:02:11.758] main app/web1 0/0/0/2/2 200 5699 - - ---- 1/1/0/0/0 0/0 "GET / HTTP/1.1"
为了清楚起见,我可以成功地将127.0.0.1:8001作为我的部署用户,使用sudo和haproxy用户.
编辑更多信息
我尝试使用Nginx代替代理,但无济于事.所以这里不是haproxy的错. Nginx说502 Bad Gateway,日志说:
2014/12/24 16:57:04 [crit] 23214#0: *1 connect() to 127.0.0.1:8001 Failed (13: Permission denied) while connecting to upstream,client: 192.168.34.1,server: www.zombieclj.local,request: "GET / HTTP/1.1",upstream: "http://127.0.0.1:8001/",host: "www.zombieclj.local"
所以是的,有一些安全问题正在发生.我仍然可以卷曲到127.0.0.1:8001.停止防火墙不会改变任何东西.
问题是SELinux只允许Web服务器与一组有限的端口建立出站连接.
原文链接:https://www.f2er.com/centos/373814.html修正了:
semanage port --add --type http_port_t --proto tcp 8001
安装semanage后
yum install policycoreutils-python
Nodejs Nginx error: (13: Permission denied) while connecting to upstream