nginx의 reverse proxy 적용하여 http => https 적용하기
- 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
nginx를 이용한 Reverse Proxy 서버 구축.
안녕하세요. 서버 개발자 JAKE AN입니다. Proxy Server란 무엇인가에 대해서 설명하고 나서 실제 서버에 간단하게 적용하는 코드를 설명하겠습니다. 1. Proxy 서버를 사용하는 이유? Proxy는 Proxy 서버를
interconnection.tistory.com
https://tttsss77.tistory.com/155
도커(Docker) : 포트 포워딩 설정(포트 맵핑)하기
도커(Docker) : 포트 포워딩 설정(포트 맵핑)하기 본 글에서는 도커 컨테이너 내부에서 동작하는 서버로 컨테이너 외부에서 접속할 수 있도록 포트 포워딩(Port forwarding) 설정 또는 포트 맵핑(Port mapp
tttsss77.tistory.com