1. 기존의 설정 파일 삭제
rm /etc/nginx/sites-enabled/default
rm /etc/nginx/sites-available/default
2. 새로운 설정 파일
apple이라는 서비스와 banana라는 서비스를 nginx에 연동한다고 가정
각각의 서버에 맞게 설정 파일을 생성
vi /etc/nginx/sites-enabled/apple.conf
vi /etc/nginx/sites-enabled/banana.conf
sites-enabled와 sites-available를 심볼링 링크로 엮어줌
ln -s /etc/nginx/sites-enabled/apple.conf /etc/nginx/sites-available/
ln -s /etc/nginx/sites-enabled/banana.conf /etc/nginx/sites-available/
nignx 설정 파일 작성
기본적으로 하나의 서버만 연결할 때와 크게 다르지 않다.
(nginx 사용하기 (Node.js / Tomcat 등 서버와 연동)
apple.conf
와 banana.conf
해당 서비스에 맞는 포트와 도메인, 루트 디렉토리만 다르고 다른 내용은 동일
server {
listen 80; #default_server 삭제
listen [::]:80; #default_server 삭제
root [[root directory]];
server_name [[domain]];
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
proxy_pass [[http://IP주소:port]];
}
}
3. HTTPS 통신을 위한 SSL 인증서 적용
apple.conf
와 banana.conf
해당 서비스에 맞는 포트와 도메인, 루트 디렉토리만 다르고 다른 내용은 동일
server {
listen 80;
listen [::]:80;
root [[root directory]];
server_name [[domain]];
return 301 https://[[domain]]$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name [[domain]];
ssl_certificate [[fullchain.pem path]];
ssl_certificate_key [[privkey.pem path]];
location / {
proxy_pass http:[[http://IP주소:port]];
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
}
}
위와 같이 작성 후 /etc/init.d/nginx restart
으로 재시작하면 된다.
아래는 예제 설정 파일
1. 가정 조건
Let’s Encrypt 인증서 사용
Apple Service
Server: Nginx
Port: 3000
Domain: fruit.com www.fruit.com
Root Directory: /var/html/www/apple
Banana Service
Server: Tomcat9
Port: 8080
Domain: banana.fruit.com
Root Directory: /var/html/www/banana
2. Example
apple.conf
server {
listen 80;
listen [::]:80;
root /var/html/www/apple;
server_name www.fruit.com fruit.com;
return 301 https://fruit.com$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name fruit.com;
ssl_certificate /etc/letsencrypt/live/fruit.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/fruit.com/privkey.pem;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
}
}
banana.conf
server {
listen 80;
listen [::]:80;
root /var/html/www/banana;
server_name banana.fruit.com;
return 301 https://fruit.com$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name banana.fruit.com;
ssl_certificate /etc/letsencrypt/live/fruit.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/fruit.com/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
}
}
One Comment
안녕하세요 질문이 있어서 답글 남깁니다.
banana.conf 에서 server 블록내
return 301 https://fruit.com$request_uri;
부분이
return 301 https://banana.fruit.com$request_uri;
이 되어야 하는것 아닌가요?