-
nginx의 reverse proxy 적용하여 http => https 적용하기Back-End/nginx 2021. 9. 11. 13:41728x90
- Front server에서, nginx 서버를 reverse proxy용으로 활용한다. 물론 redirecting 과정에서 error 발생 시 정적 html 파일을 내려주기도 한다.
- 여기서 nginx는 SSL 인증서를 적용하여 클라이언트와 서버가 https 통신을 하도록 기능을 부여 할 것이다.
- 443번 포트(https 전용 포트)로 request가 들어오면 그대로 next로(host의 3060포트) redirecting 해줄 것이고, 80번 포트로 request가 들어오는 경우 nginx 내부 configuration 설정을 통해 443으로 redirecting 을 해 줄 것이다.
- 먼저, http://nodebird.com 도메인으로 브라우저가 request를 보내면, nginx의 80포트에서 이 request를 https://nodebird.com으로 redirect 시킨다. (여기서 $host는 server_name, request_uri는 request에서 host 제외한 뒷부분)
- 그 후, 이 요청은 443번 포트를 타면서 ssl 암호화 작업이 적용되고, 이 후 localhost:3060으로 proxy_pass되어 최종적으로 요청이 도착한다.
- 인턴십에서는 docker 컨테이너를 활용하여 nginx를 백그라운드 프로세스로 실행하여 해당 기능을 구현하였다.
- 인턴쉽에서 진행한 nginx 모듈도 비슷한 원리로 작성되었다. 먼저 docker nginx를 가동하면서, host의 80번 포트와 443 포트를 docker 내부의 80과 443으로 포트포워딩 시켜준다. 이 후, 도커의 80번 포트는 443 포트로 redirecting시키고, 443포트로 들어오는 request들은 ssl 암호화 작업이 적용되고, 네이버의 로그인 모듈을 타도록 한다. 이 후 현재 실행중인 nginx container에서 host IP로 proxy pass시켜야 되는데, docker 컨테이너에서 host에 접근하기 위해서는
upstream mini_storehome_productdetail_mobile { server host.docker.internal:3000; }
를 통해 host의 3000번 포트로 접근할 수 있다고 한다. 저건 docker와 host가 내부 NAT망을 쓰는데, 여기서 docker가 host 네트워크로 접근할 수 있는 ip주소를 의미한다고 한다. 자세한건 아래 참고자료를 확인
- nginx 서버에서 reverse proxy를 할 때, 호스트 서버와 http 통신을 하는데 이 부분은 보안을 신경쓰지 않아도 되어서 인 것 같다.
https://interconnection.tistory.com/27
https://tttsss77.tistory.com/155
'Back-End > nginx' 카테고리의 다른 글
apache vs nginx (0) 2021.09.10