Nginx Reverse Proxy 설정시 502 Bad Gatway 문제

2021. 7. 7. 11:43IT개발/AWS

반응형
결론 setsebool -P httpd_can_network_connect true   요 명령어로 해결! : )
원인 (SELinux 의 보안 모듈에 의해)
기본적으로 httpd 프로세스에 의해 네트워크 연결 허용 여부가 false 이다.
현상 우선 nginx를 설치하고 springboot를 기동시켰다.
그다음 revers proxy 기능을 탑재하였는데
어라... 502 Bad Gateway ????
음... 흠...
너... 나를 삽질의 구렁텅이로 밀어넣을껴?
대처 자자 일단 젤먼저 로그를 보자!
일단 /var/log/nginx/error.log 로 이동!
로그를 보니...( 글 하단 참고 )
응? Permission denied? 왜! 내앞길을 막는건데!!

로그 특정부분(connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream )을 
검색해보니!

역시나... 설정이 문제가 아니였어!
얻은 지식 알아보니 SELinux(보안이 강화된 리눅스 커널모듈)에서 httpd에 의해 네트워크 연결시도를 가능하게 할지 말지 여부 값이 있는데 그걸 못하게 기본적으로 막아놨다.
(하기사 보안은 열어둔거보단 잠궈져있는게 낫고, 그게 기본이라 했다)

linux kernel 2.6 부터 정식 kernel tree 에 포함되었다고 하니 이번기회에 SELinux 스터디가 좀 필요해보인다.

리눅스에서 서비스를 돌린다는 녀석이 이런것 좀 알아야제?
참조 https://cwiki.apache.org/confluence/display/httpd/13PermissionDenied

https://shineum.tistory.com/99

/var/log/nginx/error.log 에러 내용

2021/07/07 01:58:44 [crit] 8433#8433: *1
connect() to 127.0.0.1:8080 failed (13: Permission denied)
while connecting to upstream,
client: 218.49.143.118, server: api.xxx.co.kr,
request: "GET /api HTTP/1.1",
upstream: "http://127.0.0.1:8080/api",
host: "api.xxx.co.kr"

반응형