Linux

[Linux] CentOS 7 Nginx Tomcat Reverse Proxy 설정방법

Jeong Jeon
반응형

이번에는 nginx의 Reverse Proxy 설정 방법에대해서 작성해 놓으려고한다.

 

ReverseProxy란?

쉽게 보면 Tomcat 앞에 존재하는 Nginx 또는 Apache와 같은 웹서버가 요청을 대신받아서 비지니스 로직이 필요한 부분은 톰캣에게 위임하고 정적리소스 지원같은 경우는 스스로 처리 하는 방법이다.

 

사용 ->

1). SSL 터널링

2). 웹컨테이너의 이중화

3). 정적 리소스 공유

4). 서브 도메인 사용 등등

 

본인은 IDC에 등록해놓은 서브 도메인을 사용한 리버스 프록시를 설정하였다.

 

처음 IDC에 서브도메인 test2.testBabree.co.kr 을 등록한뒤 시작!

기존에 test1.testBabree.co.kr 을 사용하고 있다는 상황으로 보도록 하자

 

1. 첫번째 nginx sites-available, sites-enabled 설정

  • sites-available: 가상 서버 환경들에 대한 설정 파일들이 위치하는 부분 !, 가상 서버를 사용하거나 사용하지 않던간에 그에 대한 설정 파일들이 위치하는 곳
  • sites-enabled: sites-available에 있는 가상 서버 파일들중에서 실행시키고 싶은 파일을 symlink로 연결한 폴더. 실제로 이 폴더에 위치한 가상서버 환경 파일들을 읽어서 서버를 세팅하게된다.

 

 

1). sites-available, sites-enabled 디렉토리를 생성한다

  • 디렉토리 생성
cd /etc/nginx vi nginx.conf mkdir sites-available mkdir sites-enabled

2). nginx.conf에 sites-enabled 연결

http { } 맨 아래에 아래 sites-enabled/*; 를 추가하여 저장한다.

include /etc/nginx/sites-enabled/*;

 

 

3). sites-available 디렉토리에 sitea.domain.com , siteb.domain.com 파일 생성한다.

asite.domain.com, bsite.domain.com 서비스를 분리하는 상황으로 파일명은 맘대로 해도무관.

cd sites-available touch sitea.domain.com touch siteb.domain.com

 

4). asite.domain.com 요청을 처리할 설정 파일을 수정/작성 한다. bsite.domain.com 파일도 연결하고자 하는 톰캣 포트 번호화 서브도메인 명만 다르게 해서 저장

server_name -> subdomain등록

return 301 https:// redirect주소$request_uri; => 리다이렉트할 주소

 

server {
    listen 80;
    server_name sitea.domain.co.kr;
    return 301 https://sitea.domain.co.kr$request_uri;
}


server {
	#ssl
    listen       443 ssl;
    server_name  sitea.domain.co.kr;

    charset utf-8;
    #charset koi8-r;
    #    root   /usr/share/nginx/html;

    #ssl on;
    ssl_certificate /openssl/ca.crt;
    ssl_certificate_key /openssl/ca.key;


    client_max_body_size 2000M;
    proxy_max_temp_file_size 100M;
    proxy_connect_timeout 7d;
    proxy_send_timeout 7d;
    proxy_read_timeout 7d;

	#log
    access_log /var/log/nginx/sitea/access.log;
    error_log /var/log/nginx/sitea/error.log;

	#websocket
    location /manageChannel {
        proxy_pass http://localhost:49912;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header Origin "*";
    }

	#resource 참조경로 설정
    location /resources/ {
        alias   /var/www/sitea.domain.co.kr/static/resources/;
        autoindex off;
#        access_log on;
        expires 1M;
    }

    location / {
        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;
        proxy_set_header    X-NginX-Proxy true;
        proxy_pass http://localhost:49912;
        proxy_redirect      off;
        charset utf-8;
        # buffer size
        proxy_buffering   on;
        proxy_buffer_size    1024k;
        proxy_buffers        1024   1024k;
        client_body_buffer_size 1024k;
        proxy_busy_buffers_size 1024k;
    }

    #    index  index.html index.htm;
    #}

    #error_page  404    /var/www/404.html;

    # redirect server error pages to the static page /50x.html
    #
    #error_page   500 502 503 504  /50x.html;
    #location = /50x.html {
    #    root   /var/www;
    #}

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

 

 

5). sites-enable 폴더에 심볼링 링크 생성

nginx 설정에 포함할 설정파일 sites-available 심볼릭 링크를 생성

cd /etc/nginx/sites-enabled

ln -s /etc/nginx/sites-available/sitea.domain.co.kr ./sitea.domain.co.kr
ln -s /etc/nginx/sites-available/siteb.domain.co.kr ./siteb.domain.co.kr

=> sitea.domain.com -> /etc/nginx/sites-available/sitea.co.kr

=> siteb.domain.com -> /etc/nginx/sites-available/siteb.co.kr

 

 

설정은 끝났으니 nginx를 Restart 해서 확인해보면 된다.

 

반응형