홈서버 Proxy 서버 구축하기.(Nginx Reverse Proxy)

제가 ESXi로 홈서버를 구축하면서 Proxy 서버를 구축하는 이유는 여러가지가 있지만 가장 큰 이유는 바로 관리의 용이성 입니다.

저같은 경우 dalso.org라는 도메인을 사용중인데 Proxy서버는 이 도메인의 서브도메인, blog,drive,기타 등등 여러가지 사용할 수 있도록 도와줍니다.

Proxy 서버란?

프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 ‘프록시’, 그 중계 기능을 하는 것을 프록시 서버라고 부른다 – wiki백과

뭐 간단하게 중계서버라고 보시면 됩니다. 중간에 길을 찾아주는(?)
DNS 개념과 유사하게 보시면 됩니다.

※ 저는 Nginx를 이용한 Reverse Proxy를 사용하고있습니다만 간단하게 프록시 서버라고 하겠습니다

프록시 서버 미사용시 흐름도

클라이언트(모바일,PC) -> 인터넷 -> 공유기 -> 포트별 포트포워딩으로 각서버 및 도메인 접근
ex) dalso.org:80은 블로그 dalso.org:8080은 파일서버 등등

프록시 서버 사용시 흐름도

간단하게 앞 Proxy 서버에서 갈길을 잡아주기때문에 여러 서버 및 도메인을 운영하기 적합합니다.

클라이언트(모바일,PC) -> 인터넷 -> 공유기 -> Proxy서버 -> 각 서버 및 도메인
ex) blog.dalso.org 는 블로그 drive.dalso.org 는 파일서버 등등

구축환경

OS : Ubuntu 20.04.01 LTS
Nginx
설정에 SSL 포함되어있음

Nginx를 이용한 Reverse Proxy

그래서 제가 구축한게 Nginx를 이용한 Reverse Proxy 서버입니다.

물론 Apache를 이용해서도 구현할 수 있겠지만.. 아무래도 Nginx가 더 제손에 익숙하다보니 선택하게 되었습니다.

구축은 매우 쉽습니다. 최신버전보다는 Stable로 안정성을 추구하기때문에 기본버전으로 설치할텐데 설치 후에 설정이 중요하니 차근차근 따라오시면 됩니다.

Nginx 설치하기

설치전에 apt update && apt upgrade -y 로 패키지 상태를 최신버전으로 유지해줍니다.

깔-끔

설치할 버전은 apt list nginx 로 확인할 수 있습니다.
(-a 해봤자 구버전 나옵니다 ㅎ)

설치는 apt install nginx 로 진행해주세요.

Nginx 설치 확인하기

설치는 금방 끝나기 때문에 바로 확인해줍시다.
nginx -v && service nginx status

위 화면처럼 나오면 정상입니다.

그리고 서버의 ip로 웹브라우저를 통해 접근하면 아래처럼
웰컴투엔진엑스를 보실수있습니다.

Reverse Proxy 설정하기

이제 본격적인 Reverse Proxy 설정입니다.
예시는 도메인과 서버들을 통해 설명 드리겠습니다.

Proxy서버 IP – 192.168.1.10
도메인1 – blog.dalso.org = 서버1 192.168.1.11
도메인2 – file.dalso.org = 서버2 192.168.1.12

기본적인 구성은 공유기에서 80,443 포트포워딩을 Proxy 서버(192.168.1.10)가 받는것 입니다.

이 Proxy 서버가 웹서비스(80,443)에 대한 Request를 받게되면 Proxy서버에서 요청온 Domain의 목적지에 따라 하위서버로 전달해줍니다.

사용자가 blog.dalso.org 로 접근요청시 설정

사용자 -> 인터넷 -> 공유기 -> Proxy서버(192.168.1.10) -> 서버1(192.168.1.11)

vi /etc/nginx/sites-available/blog.dalso.org

upstream backendweb {
        server 192.168.1.11:80;
        keepalive 1024;
}

server {
        listen 80 ;
        listen [::]:80 ;

        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        server_name blog.dalso.org;
        location / {
        return 301 https://blog.dalso.org$request_uri; ###### HTTPS www로 리다이렉팅
    }

}

server {
        listen 443 ;
        listen [::]:443 ;


        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;
        server_name blog.dalso.org;

        ssl on;
        ssl_certificate /etc/letsencrypt/live/[도메인]/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/e/[도메인]/privkey.pem;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        #ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 1440m;
        ssl_buffer_size 8k;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CB
C3-SHA +SHA !aNULL !eNULL !LOW !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED';
        ssl_prefer_server_ciphers on;
        ssl_trusted_certificate /etc/letsencrypt/live/[도메인]/chain.pem;
        ssl_stapling on;
        ssl_stapling_verify on;
        access_log  /var/log/nginx/wiki.web.access.log;
        error_log /var/log/nginx/wiki.web.error.log;

        location / {

        proxy_pass http://backendweb/;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout 1d;
        proxy_set_header        Host                $http_host;
        proxy_set_header        X-Real-IP           $remote_addr;
        proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto   $scheme;

        }
}

그리고 ln -s /etc/nginx/sites-available/blog.dalso.org /etc/nginx/sites-enable/blog.dalso.org 로 심볼릭 링크 생성을 진행해줍니다.

마지막으로 service nginx restart

위와같은 버전으로 여러 도메인을 지정해주면 아래 서버 및 도메인이 몇개던지 Reverse Proxy를 이용해서 연계가 가능합니다.

 

————————————————–

사이트 리뉴얼중입니다~

서버(Linux, ESXi), NAS(헤놀로지, ESXi 및 IT관련 정보, 기타 등등을 공유하는 커뮤니티 SVRFORUM을 새로 만들었습니다.
많은 가입(?) 부탁드립니다~
https://svrforum.com

이전글들은 모두 상단 메뉴의 Blog 글 모음에있습니다!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

홈서버 IT 커뮤니티 SVRFORUM
Link