미크로틱의 web proxy로 리버스 프록시를 구현해 아이피 하나로 여러 서버를 도메인에 연결해서 사용하고 있는데요.

서버에 SSL을 적용하려 보니 미크로틱은 SSL을 지원하지 않아 대안으로 윈도우에 NGINX를 설치하고 리버스 프록시로 활용해봤습니다.

NGINX 파일 구조

nginx_reverse_proxy_00

아래 옵션부분에서 파일을 include 할때 상대경로를 사용했는데 참고로 파일의 위치를 보여주기 위한 스크린 샷입니다.

NGINX 리버스 프록시 설정 파일

NGINX는 윈도에 설치하였으며 설정과 파일구성은 리눅스 스럽게 해봤습니다.

우선 전체적인 설정을 담은 nginx.conf 파일입니다.

각 서버에 접속 로그가 남기때문에 nginx에 접속로그를 남기는건 자원낭비인것 같아 엑세스 로그는 하지 않고 에러 로그만 수집하게 설정했습니다. 만일 엑세스 로그까지 수집하고 다면 access_log off; 부분을 삭제하거나 로그를 접속하는 경로별로 지정해 저장할수도 있지만 이 포스팅에서는 각 옵션에 대해 심도있게 다루진 않을것이므로 (홈서버 레벨에서…) 기회가 된다면 세부 옵션을 다뤄보겠습니다.

윈도용 nginx의 상대경로는 conf 폴더가 있는 곳을 루트로 하기 때문에 c:\로 시작하는 절대경로를 작성할 필요가 없습니다. 코드 길이가 너무 길어지고 지저분해지니까요.

프록시에 관련된 설정은 proxy_params.conf 파일에 저장하고 불러오는 방식으로 설정했고 각 서버 연결에 대한 설정은 conf-available 폴더 하위의 conf  파일을 읽어옵니다.

proxy_params.conf 파일입니다.

리눅스에 nginx를 설치하면 기본으로 있는 proxy_params 파일인데 윈도용은 포함이 되어 있지 않네요. 기본 설정에서 약간만 추가해줬습니다.

Host 에 대한 파라미터를 $host 로 받을경우 시놀로지가 연결이 되지 않기때문에 $http_host 로 값을 넘겨받습니다. 그리고 client_max_body_size 역시 시놀로지 때문에 크게 잡아줬습니다.

강조된 6번째 라인은 리버싱된 서버의 정보를 헤더에 보일것인지, nginx의 서버 헤더를 보일것인지이 대한 옵션입니다. 만일 아파치 서버를 nginx로 위장하고 싶으면 6번째 라인은 지우면 됩니다.

nginx_reverse_proxy_01nginx_reverse_proxy_02

(위 이미지는 proxy_pass_header 가 적용되지 않은 헤더 정보, 아래는 proxy_pass_header 가 적용된 헤더 정보)

ssl.conf 파일입니다. 위의 proxy_params.conf 와 같이 SSL에 관련된 옵션을 따로 저장해서 코드가 중복되지 않고 관리하기 편하게 저장합니다.

다음은 conf-available 폴더 안에 있는 리버스 프록시의 설정 파일 (mystor.conf) 입니다.

간단하게 설명하자면 각 포트로 전달받은 요청을 nginx에서 해당 주소로 연결해주는 설정입니다. 시놀로지의 포트들 때문에 길어보이지만 사실 별거 없습니다. 중요한 부분은 nginx와 시놀로지가 같은 ssl 인증서를 가지고 있어야 문제없이 작동하기 때문에 시놀로지에 설정한 SSL 파일을 적당한 위치에 복사 후 ssl에 대한 정보를 입력해 주는 것입니다. 그리고 ssl.conf 에서 설정한 ssl 관련 정보를 include로 불러옵니다.

포트에 대한 설정같은 경우는 흔히 80번포트를 nginx에 설정하고 연결되는 서버를 8080등의 비정규 포트를 사용하는데 그럴필요가 전혀 없습니다. 그냥 정규포트를 연결해도 nginx가 알아서 교통정리를 하기 때문에 문제가 되지 않습니다.

그리고 시놀로지의 경우 DSM에 SSL을 적용시 웹 서비스 (80번 포트를 사용하는 서비스 : ex 포토 스테이션, 메일 스테이션)도 SSL을 꼭 적용해야 리디렉션에 오류가 없습니다.

위의 설정을 복사해서 적당히 수정하면 간단하게 nginx로 SSL이 적용된 리버스 프록시를 구성할수 있습니다.

PG

익스트림 매뉴얼 주인장 PG입니다. 다방면의 디지털 기술에 관심이 많고 삽질을 즐겨합니다. 포스트 내용중 궁금한 점이 있다면 댓글로 남겨주세요.

익스트림 매뉴얼의 모든 내용은 불펌금지 입니다. 자세한 내용은 링크를 참조하세요.

댓글이 없습니다.