通过systemctl运行haproxy与手动运行haproxy不同 。
这是通过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,并且使用了非常简单的configuration:
# 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"
为了清楚起见,我可以使用sudo和haproxy用户作为我的部署用户成功curl127.0.0.1:8001。
我尝试使用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"
所以是的,有一些安全事情正在进行。 我仍然能够curl到127.0.0.1:8001。 停止防火墙不会改变任何东西。
问题是SELinux只允许Web服务器进行到有限的一组端口的出站连接。
通过这样做来修复
semanage port --add --type http_port_t --proto tcp 8001
安装semanage
后
yum install policycoreutils-python
Nodejs Nginx错误:(13:权限被拒绝),当连接到上游
我使用了centos wiki上的Audit2Allow函数
查看规则:
grep haproxy /var/log/audit/audit.log | audit2allow -m haproxy
创build一个策略文件( *.pp
)。
grep haproxy /var/log/audit/audit.log | audit2allow -M haproxy
现在在安装包的时候,我还包含了haproxy.pp
文件,并将其加载到selinux中
semodule -i haproxy.pp