본문 바로가기
오라클 클라우드

오라클 클라우드 Ununtu에 Nginx Server Block (가상호스트) 설정

by xavi2019 2021. 12. 16.
sudo apt update
sudo apt upgrade
sudo apt install nginx

# 리부팅시 자동시작
sudo systemctl enable nginx

#php 연동할 필요있을 경우
sudo apt install php-fpm

아파치의 가상호스팅에 해당하는 Server Block을 설정하여 어려 도메인으로 서비스해 봅니다.

sudo mkdir -p /var/www/{도메인1}
sudo mkdir -p /var/www/{도메인2}

sudo 사용을 피하기위해 ubuntu 계정으로 소유자를 바꿉니다.

sudo chown -R $USER:$USER /var/www/{도메인1}
sudo chown -R $USER:$USER /var/www/{도메인2}

간혹, www-data 사용자를 필요로 하는 서비스가 있을 수 있는데 그때 알아서 대처합니다.

 

초기 페이지를 각각 만듭니다.

vi /var/www/{도메인1}/index.html
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>도메인1 페이지</title>
</head>
<body>
    <h1>도메인 1 페이지</h1>
</body>
</html>

두번째 도메인

vi /var/www/{도메인2}/index.html
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>도메인2 페이지</title>
</head>
<body>
    <h1>도메인2 페이지</h1>
</body>
</html>

가상호스트 환경파일을 복사합니다.

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/{도메인1}

아래와 같이 내용을 편집합니다.

server {
        listen       80;
        listen       [::]:80;
        
        server_name {도메인1} www.{도메인1};
        root /var/www/{도메인1};
        
        index index.php index.html;
        client_max_body_size 10M;
        location / {
                try_files $uri $uri/ =404;
        }
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
        location ~ /\.ht {
                deny all;
        }
}

 

두번째 도메인도 위와 동일하게 만듭니다.

 

또한 nginx.conf에 들어가서, 해시 버킷 크기 64를 활성화하도록 편집해야 합니다. 
이렇게 하면 여러 서버 이름이 있을 때 발생할 수 있는 해시 버킷 메모리 문제를 방지하는 데 도움이 됩니다.

sudo vi /etc/nginx/nginx.conf
# server_names_hash_bucket_size 64

#를 삭제합니다.

 

설정파일을 활성화 합니다.

sudo ln -s /etc/nginx/sites-available/{도메인1} /etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/{도메인2} /etc/nginx/sites-enabled

nginx를 재 실행합니다.

# 문법이 맞는지 확인
sudo nginx -t

# 재 실행 
sudo systemctl restart nginx
인증서 받기
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx

3개월마다 갱신하기
sudo crontab -e
0 3,17 1 * * /usr/bin/certbot renew --renew-hook="sudo systemctl restart nginx"
sudo apt update
sudo apt upgrade
sudo apt install nginx
sudo systemctl enable nginx
sudo mkdir -p /var/www/bi03.tera.co.kr
sudo chown -R ubuntu: /var/www/bi03.tera.co.kr/
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/bi03.tera.co.kr.conf
sudo vi /etc/nginx/sites-available/bi03.tera.co.kr.conf
sudo vi /etc/nginx/nginx.conf
sudo ln -s /etc/nginx/sites-available/bi03.tera.co.kr.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
sudo apt install php-fpm
curl http://localhost
sudo iptables -I INPUT 1 -i ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

댓글