NGINX를 이용한 프록시 (forward proxy) 서버 구축 및 파이썬 활용

IP 우회 또는 내부망을 외부망과 연결하는데 필요한 프록시 서버의 구축 방법을 소개한다.

NGINX 설치

NGINX는 Appache와 같은 웹 서버 애플리케이션중에 하나이다. 가볍고 사용법이 간편하여 NGINX를 사용해 프록시 서버를 구현하려 한다. 설치 환경은 ubuntu (16.04 또는 18.04)에서 진행한다.

Install Dependencies and Source File

먼저 아래의 dependency들을 설치한다.

위의 dependency들을 다 받았으면, wget 명령어를 통해 source file을 받아준다. 추가로 proxy 모듈을 위해 아래와 같이 git 저장소 또한 받아준다.

Set Command and Service File

위에서 nginx를 설치했으면, 커맨드 실행을 위해 아래와 같이 커맨드를 등록할 수 있다.

이제 system 관리자를 통해 nginx를 다룰 수 있도록 설정 파일을 정의해야한다. 아래와 같은 명령어를 설정 파일을 연다.

그 다음 아래의 내용을 기입해 저장한다.

위에서 ExecStartPre 와 같이 경로를 지정하는 부분에서는 실제 nginx가 설치된 위치로 바꿔주어 적용할 수 있다.

그 뒤에 아래의 명령어로 system을 통해 nginx 등록 후, 서비스를 켜고 끌 수 있다.

Set NGINX configuration File

위에서 nginx를 가동하였다. 이제 nginx.conf 파일을 이용해 우리가 원하는 프록시 (forward proxy) 서버가 동작되게끔 설정을 바꿀 것이다. 다른 서버설정에 비해 매우 간단하여 빠르게 구축할 수 있다.

먼저 아래의 명령어를 통해 nginx.conf 파일을 연다.

그 후 아래의 내용을 기입한다.

그 뒤에 다음 명령어를 통해 conf 파일에 오류가 없는지 확인할 수 있다.

만약 “OK” 라는 문구가 포함된 2줄의 출력문이 나온다면 오류가 없는 것이다. 오류가 없음을 확인 했으면, 아래와 같이 nginx 서비스를 재시작한다. 그렇게되면 프록시 서버 구축이 완료된다.

Set Firewall Configuration on Google Cloud Platform (GCP)

만일 Google Cloud Platform (GCP)나 Amazon Web Service (AWS)를 사용해 프록시 서버를 구축한다면, 위에서 설정한 프록시 서버의 포트 번호를 방화벽에서 열어줘야한다. GCP의 경우, 아래와 같이 설정할 수 있다.

Test the proxy server with python

아주 간단하게 requests 모듈을 사용하여 프록시 서버작동을 테스트할 수 있다.