概要
これも何番煎じかわかりません、、、
Apatchとnginxを共存させた際の、503 bad gatewayへの対応メモです。
方法
ApatchのLissenのポートを適当な番号に変えて、nginxをインストールする。
(インストールの方法はググったらいくらでも出てくるので割愛)
Apatch側のConfig
/etc/httpd/conf/httpd.conf
Listen 80
↓ #変更
Listen 50080
nginx側のConfig
/etc/nginx/conf.d/default.conf
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:50080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
こっからが問題でした、、、
503 bad gatewayへの対応
nginxのログには次の記録が残っていました。
/var/log/nginx/error.log
2018/07/29 23:23:12 [crit] 15305#15305: *3 connect() to 127.0.0.1:50080 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:50080/", host: "localhost"
SeLinuxのログには次の記録が残っていました。
/var/log/audit/audit.log
type=AVC msg=audit(1532874320.236:3240): avc: denied { name_connect } for pid=16087 comm="nginx" dest=50080 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:ephemeral_port_t:s0 tclass=tcp_socket
SeLinuxで弾かれていました。
SeLinuxは無効にするのは気が引けるので、設定で通信を許可するようにします。
#確認
[root@localhost conf.d]# getsebool httpd_can_network_connect
httpd_can_network_connect --> off
#通信許可
[root@localhost conf.d]# setsebool -P httpd_can_network_connect 1
#確認
[root@localhost conf.d]# getsebool httpd_can_network_connect
httpd_can_network_connect --> on
これで503 bad gateway問題は解消されるはずです。
httpd_can_network_connectの詳細はredhat. customer portalを参照。