해당 게시글은 Nginx가 설치된 상태를 기준으로 작성되었습니다.
Nginx 세팅을 할때, 폴더와 내용을 조금 더 깔끔하게 하기 위함을 알립니다.
/etc/nginx/sites-available/default 에 서버 설정에 대한 기본설정이 정의되어 있고,
보통 해당 파일에 서버설정을 덧붙이는 예시가 많습니다.
[default]
...
# root /usr/share/nginx/html/dist;
# index index.html;
# location / {
# proxy_pass http://localhost:8081;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Host $http_host;
# try_files $uri $uri/ =404;
# }
#}
server {
server_name www.ourcodelabs.kr;
access_log /var/log/nginx/ourcodelabs.log;
error_log /var/log/nginx/ourcodelabs-error.log error;
location / {
# CORS Accept
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
#
# Custom headers and headers various browsers *should* be OK with but aren't
#
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range, authorization';
#
# Tell client that this pre-flight info is valid for 20 days
#
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;
}
proxy_pass http://localhost:8081;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
try_files $uri $uri/ /index.jsp;
}
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_redirect off;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/ourcodelabs.kr/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/ourcodelabs.kr/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
위와 같은 형태로 말이죠.
하지만, 한 서버에서 도메인을 여러개 세팅을 한다면?
위의 형태가 덧붙으며 가독성이 떨어지기 마련이죠.
/etc/nginx/nginx.conf 파일을 확인해보시면, 아래와 같은 문구를 볼 수 있습니다.
맞습니다, nginx의 설정은 nginx.conf가 메인이며 거기에 http가 정의 되어있고
그 안에 server 설정은 블럭을 쳐둔 해당 폴더에서 가져오도록 되어있습니다.
별도로 폴더와 파일을 빼서, include 키워드로 포함을 시켜줄 순 있지만, 우린 있는 그대로 이용해보도록 하겠습니다.
/etc/nginx/sites-enabled 에 도메인명으로 설정파일 생성해서 관리!
sudo nano /etc/nginx/sites-enabled/www.ourcodelabs.kr
여러 도메인을 관리한다 했을때, 식별성을 위해 도메인명을 파일명으로 설정해주도록 했습니다.
해당 파일엔 기존에 우리가 /etc/nginx/sites-available/default 에 서버 설정을 해주듯 아래처럼 해주시면됩니다.
server {
listen 443 ssl;
server_name www.ourcodelabs.kr ourcodelabs.kr;
root /usr/share/nginx/ourcodelabs/dist;
index index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.html;
}
ssl_certificate /etc/letsencrypt/live/www.ourcodelabs.kr/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/www.ourcodelabs.kr/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
listen 80;
server_name www.ourcodelabs.kr ourcodelabs.kr;
return 301 https://$server_name$request_uri;
}
위의 설정은, 해당 도메인의 80 포트 (http) 로 접속하였을때
443 포트 (https) 로 리디렉션을 해주도록 세팅해준 형태입니다.
sudo nginx -t
sudo service nginx restart
작업이 끝났다면, 명령어를 통해 설정이 잘못되진 않았는지 검사후 nginx를 재실행해주도록 하면 적용 완료입니다.
감사합니다.
[Alibaba] 계정 AccessKey 발급 (0) | 2023.04.25 |
---|---|
[Ubuntu] 스토리지를 추가하고 마운트 하는방법을 알아보자 (0) | 2023.03.30 |
[Tencent Cloud] CVM Window 가상머신 설치하는 방법 (0) | 2023.03.06 |
[MariaDB] 클라우드에 MariaDB를 설치해보자! 통합정리 (0) | 2023.02.23 |
[Ubuntu 18.04] GoLang Application 을 Service로 등록하기 (0) | 2022.10.21 |