티스토리 뷰
* 참고 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
TAG
- ssh
- development
- Android
- kotlin
- food
- place
- SSL
- JavaScript
- Security
- Spring
- devel
- Review
- web
- Linux
- gpkiapi
- Compile
- Fun
- json parse
- 맛집
- Java
- HTTP
- Mobile
- TIP
- samba
- 엘리스센터
- springboot
- devtools
- MySQL
- dart
- Flutter
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함