Nginx로 https Proxy 서버 만들기

Status
Publishing
Created By
Empty
Last Edited Time
7/13/2020, 3:36:00 PM
Description
Nginx로 https Proxy 서버 만들고 접속 인증 기능 추가
Tags
Nginx
Docker
네트워크
NGINX ?
Nginx(엔진 x라 읽는다)는 웹 서버 소프트웨어로, 가벼움과 높은 성능을 목표로 한다. 웹 서버, 리버스 프록시 및 메일 프록시 기능을 가진다. ... Nginx는 요청에 응답하기 위해 비동기 이벤트 기반 구조를 가진다. 이것은 아파치 HTTP 서버의 스레드/프로세스 기반 구조를 가지는 것과는 대조적이다. 이러한 구조는 서버에 많은 부하가 생길 경우의 성능을 예측하기 쉽게 해준다.
NGINX로 HTTPS PROXY 서버 만들기
브라우저의 https redirect 기능 때문에 http로 접속을 못하는 경우가 생겼다. 그래서 간단하게 HTTPS PROXY 서버를 만들어 해결하려한다. 추가로 인증 기능도 추가한다.
현재 http로 동작하는 프로세스는 docker container위에 동작하고 있다.(netdata)
password 파일 생성
http or https로 접속하기 전 아이디와 비밀번호를 입력하여 인증할 수있도록 만들어준다.
$ printf "yourusername:$(openssl passwd -apr1)" > <PATH>/passwords Password: <비밀번호> Verifying - Password: <비밀번호 확인>
Shell
NGINX Config 파일 설정
아래와 같이 파일을 설정해 준다.
$ vi /nginx.conf server { /* HTTPS PORT 입력 */ listen 199; /* 도메인 입력 */ server_name ; ssl on; /* SSL 파일 경로 입력(저자는 letsencrypt를 이용하여 ssl 등록) */ ssl_certificate /etc/nginx/certs/fullchain1.pem; ssl_certificate_key /etc/nginx/certs/privkey1.pem; ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA 256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4'; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_session_timeout 5m; /* 사용자 인증을 위한 설정 */ auth_basic "Protected"; auth_basic_user_file passwords; location / { /* HTTP로 동작하는 서비스 URL 입력(현재 NGINX와 netdata는 같은 network상에 존재) */ proxy_pass ; } }
Plain Text
NGINX docker-compose 파일 설정
version: '3' services: netdata-proxy: restart: always image: nginx container_name: netdata-proxy ports: - "199:199" networks: - net volumes: /* nginx config 파일 경로 설정 */ - <PATH>/nginx.conf:/etc/nginx/conf.d/default.conf /* certs 파일 경로 설정 */ - /sw/common/certs:/etc/nginx/certs /* 사용자 인증을 위한 파일 경로 설정 */ - <PATH>/passwords:/etc/nginx/passwords /* netdata와 같은 network 설정 */ networks: net: external: name: dev-tool-net
YAML