hoony's web study

728x90
반응형

- 개요

해당 게시글은 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 파일을 확인해보시면, 아래와 같은 문구를 볼 수 있습니다.

 

/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를 재실행해주도록 하면 적용 완료입니다.

 

감사합니다.

728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading