1. 404 Not Found
로컬에서 실행했을때는 잘 되었는데 AWS에 올린 뒤로 404 에러가 발생하는 때가 있다.
다음 두가지를 수행했더니 해결 되었다.
sudo vi /etc/nginx/sites-available/default
1. 리버시 프록시 설정 추가
1번과 같이 proxy_pass를 설정해준다.
이 proxy_pass는 가장 핵심적이 부분이다.
URL이 api로 시작하는 주소로 접근하면 localhost:8080으로 보내준다는 뜻이다. 사용자가 8080번 포트로 접근하지 않고 80번 포트로 접근하여도 api를 맨 앞에 포함한 경로로 접근하면 80번 포트로 접근한 것과 같은 상황이 발생하도록 한다.
2. 404 페이지 주석 처리
NGINX 서버로 요청이 들어왔을 때, 먼저 NGINX 웹서버에서 해당 uri의 파일을 찾게된다. 만약 웹서버에 존재하지 않으면 404 Not Found 페이지를 보여주게 된다. 따라서 위 사진의 2번 처럼 주석처리를 해주어야 제대로 된 요청 페이지를 볼 수 있게 된다.
리버시 프록시란 무엇일까?
클라이언트 요청을 대신 받아 내부 서버로 전달해주는 것을 리버스 프록시(Reverse Proxy) 라고 한다.
기본 nginx 설정 파일을 보면 URL 경로가 /로 시작하여 들어오는 경우, root에 지정된 경로에 따라 일치하는 파일로 이동하여 웹에서 보여준다. 하지만 reverse proxy를 서버 블록에 적용하면 URL 경로와 적합한 서버블록을 찾은 후 해당 서버블록의 정보의 proxy_pass에 따른 내용을 보여준다. reverse_proxy를 통해 8080번 포트를 통해 접속해야 볼 수 있는 화면도 80번 포트에 접속했을 때 확인할 수 있도록 설정을 변경할 수 있다.
reverse_proxy의 장점
- 보안
nginx에 reverse_proxy를 통해 접근하도록 설정하면 해당 서버에 접속하는 클라이언트와 서버 IP 모두들 숨길 수 있게 된다. 제공하는 프록시 서버의 IP만 공개함으로써 해킹에 대한 대비를 할 수 있다. 또한 만얀, 해킹을 당하더라고 중요한 정보가 담겨져 있는 DB서버와 캐시 서버 등의 기존 서버에 대한 해킹을 방지할 수 있다.
- 서버 성능
성능면에서도 우위를 점할 수 있다. 프록시 서버를 사용하여 캐싱 기능과 트래픽 분산 기능을 결합시켜 전반적인 서버 성능의 향상을 도모할 수 있다.
- 트래픽 분산 - 로드 밸런싱
몇몇 프록시 서버는 트래픽 분산 기능을 제공한다. 이 중에서 nginx도 포함된다. 한 서버에 트래픽이 과도하게 몰릴 경우 해당 서버가 버티지 못하는 경우도 종종 발생한다. 이러한 경우를 방지하고자 nginx는 지정된 프록시 서버에 트래픽을 분산시켜 트래픽이 과중하게 몰리는 경우를 미연하게 방지한다.
참고자료