티스토리 뷰

 

 

* 참고 1 : 만약 AWS 의 ALB 를 사용중이라면, ALB 에도 SSL 인증서 관련 설정이 필요 하다.

 

 

1. SSL 인증 받기 전

upstream undertow_web {
    server 192.168.0.10:9090 weight=1 max_fails=3 fail_timeout=5s;
    server 192.168.0.10:9091 weight=1 max_fails=3 fail_timeout=5s;
    server 192.168.0.11:9090 weight=1 max_fails=3 fail_timeout=5s;
    server 192.168.0.11:9091 weight=1 max_fails=3 fail_timeout=5s;
    server 192.168.0.12:9090 weight=1 max_fails=3 fail_timeout=5s;
    server 192.168.0.12:9091 weight=1 max_fails=3 fail_timeout=5s;
} # upstream

server {

    listen 80 default_server;
    server_name MY-SITE-URL;

    charset                     utf-8;
    proxy_set_header            Host $http_host;
    proxy_set_header            X-Real-IP $remote_addr;
    proxy_set_header            X-Forwarded-For $http_x_forwarded_for;
    proxy_set_header            X-Forwarded-Proto $scheme;
    proxy_set_header            X-NginX-Proxy true;
    proxy_set_header            X-Forwarded-Port $server_port;
    proxy_connect_timeout       150;
    proxy_send_timeout          100;
    proxy_read_timeout          100;
    proxy_redirect              off;

    location / {
        charset                     utf-8;
        proxy_http_version          1.1;
        proxy_set_header            Upgrade $http_upgrade;
        proxy_set_header            Connection "upgrade";

        proxy_set_header            Host $http_host;
        proxy_set_header            X-Real-IP $remote_addr;
        proxy_set_header            X-Forwarded-For $http_x_forwarded_for;
        proxy_set_header            X-Forwarded-Proto $scheme;
        proxy_set_header            X-NginX-Proxy true;
        proxy_set_header            X-Forwarded-Port $server_port;
        proxy_set_header            Referer $http_referer;
        proxy_connect_timeout       150;
        proxy_send_timeout          100;
        proxy_read_timeout          100;
        proxy_redirect              off;
        proxy_pass                  http://undertow_web$request_uri;
    } # location

    # SSL 인증 받기 위해 임시 설정
    location ^~ /.well-known/ {
        default_type "text/plain";
        root /var/www/html/MY-SITE-URL;
    } # location

} # server

 

 

2. SSL 인증 받은 후

upstream undertow_web {
    server 192.168.0.10:9090 weight=1 max_fails=3 fail_timeout=5s;
    server 192.168.0.10:9091 weight=1 max_fails=3 fail_timeout=5s;
    server 192.168.0.11:9090 weight=1 max_fails=3 fail_timeout=5s;
    server 192.168.0.11:9091 weight=1 max_fails=3 fail_timeout=5s;
    server 192.168.0.12:9090 weight=1 max_fails=3 fail_timeout=5s;
    server 192.168.0.12:9091 weight=1 max_fails=3 fail_timeout=5s;
} # upstream

server {
    listen 80 default_server;
    server_name MY-SITE-URL;

    access_log /var/log/nginx/MY-SITE-URL/access.log;
    error_log /var/log/nginx/MY-SITE-URL/error.log;

    #rewrite ^ https://$server_name$request_uri? permanent;
    return 301 https://$host$request_uri;


    # SSL 인증 받기 위해 임시 설정
    #location ^~ /.well-known/ {
    #    default_type "text/plain";
    #    root /var/www/html/MY-SITE-URL;
    #}
    
} # server

server {
    listen 443 ssl;
    server_name MY-SITE-URL;

    ssl_certificate                 /etc/nginx/SSL/MY-SITE-URL/cert.pem;
    ssl_certificate_key             /etc/nginx/SSL/MY-SITE-URL/pem.key;

    ssl_session_cache               shared:SSL:1m;
    ssl_session_timeout             5m;

    ssl_ciphers                     HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers       on;
    client_header_buffer_size       64k;
    large_client_header_buffers     4 64k;

    location / {
        charset                         utf-8;
        client_max_body_size            100m;
        proxy_http_version              1.1;
        proxy_set_header                Upgrade $http_upgrade;
        proxy_set_header                Connection "upgrade";
        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_set_header                X-Forwarded-Port $server_port;
        proxy_set_header                Referer $http_referer;
        proxy_connect_timeout           300;
        proxy_send_timeout              300;
        proxy_read_timeout              300;
        proxy_redirect                  off;
        send_timeout                    300;
        proxy_pass                      http://undertow_web$request_uri;
    } # location

} # server

 

 

3. ALB 또는 ELB 이용시 클라이언트의 아이피가 여러개로 찍히는 경우

ALB 또는 ELB 를 통해 들어온 클라이언트의 아이피 주소를 추출해 보면, 아래와 같이 여러개 나타나는 경우가 있다.

예) 192.168.0.111, 192.168.0.112

위의 예제에서는  192.168.0.112 는 ALB 의 아이피가 되고, 실제 클라이언트의 아이피는 192.168.0.111 가 된다.

웹 프로그램에 로그인 처리 또는 결재등 을 처리 할때 클라이언트의 아이피를 기입 하는 경우가 있는데, 이때 두개의 아이피 주소가 들어가게 되는 경우가 발생 한다. 이러한 부분을 막기 위해 아래와 같이 nginx 설정 파일을 수정 한다.

 

nginx.conf 파일을 열어, http context 에 아래와 같이 기입 한다.

user www-data;
worker_processes auto;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    multi_accept on;
} # events

http {
	... 중략 ...
    # 아래의 set_real_ip_from, real_ip_header 입력
    set_real_ip_from 192.168.0.112; # 사용중인 ALB 의 아이피 주소로 변경
    real_ip_header X-Forwarded-For;
    
    ... 중략 ...
} # http

 

 

sites-available 아래 사이트 설정 파일을 열어 아래와 같이 편집 한다.

server {
        listen 443 ssl;
        server_name api.pharmbook.co.kr;

        ssl_certificate                 /etc/nginx/SSL/MY-SITE-URL/cert.pem;
        ssl_certificate_key             /etc/nginx/SSL/MY-SITE-URL/pem.key;

	... 중략 ...

        location / {
        	... 중략 ...
                
                proxy_set_header                X-Forwarded-For $http_x_forwarded_for;
                #proxy_set_header                X-Forwarded-For $proxy_add_x_forwarded_for;
                
        	... 중략 ...
        } # location

} # server

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함