운영체제 및 컴퓨팅 환경: AWS EC2 CentOS 7.6.1810

Nginx 버전: 1.12.2

 

이슈:
다음과 같이 엔진엑스에서 도메인을 타고 들어왔을 때 8080 포트로 포워딩이 되도록 설정하였음.

 

그러나 도메인 접속시 502 (Bad Gateway) 에러가 발생하였으며, 엔진엑스 로그를 확인해 보니 다음과 같은 에러 메세지를 내보내고 있었다.

 

2018/10/01 22:59:50 [crit] 881#0: *1 connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream,
client: 211.60.50.190, server: jenkins.blablabla.com, request: "GET /favicon.ico HTTP/1.1", upstream:
"http://127.0.0.1:8080/favicon.ico", host: "jenkins.blablabla.com", referrer: "http://jenkins.blablabla.com/"

 

원인:

여러 검색 등을 통해 확인 결과, 기본적으로 EC2 인스턴스를 런치할 때 SELinux (Security Enhanced Linux)가 함께 작동하는데, 이 SELinux가 HTTP 프록시를 차단하고 있는 것이 문제였다.

 

해결:

이러한 문제를 해결하기 위해 HTTP 프록시를 허용해주는 커맨드를 실행하기로 하였고, 다음과 같이 실행하였다.

$setsebool -P httpd_can_network_connect true

 

여기서 -P는 persist의 의미로, 재부팅 후에도 환경설정이 그대로 적용된다는 말이다. 이렇게 함으로써 정상적으로 도메인 접속 후 포트포워딩이 문제 없이 이루어 지는 것을 확인할 수 있었다.

반응형

+ Recent posts