서버 블록은 특정 도메인에 대한 설정을 정의하는 Nginx 지시어로, 단일 서버에서 둘 이상의 웹 사이트를 실행할 수 있습니다. 각 웹 사이트에 대해 사이트 문서 루트(웹 사이트 파일이 들어 있는 디렉토리)를 설정하고, 별도의 보안 정책을 작성하며, 다른 SSL 인증서를 사용하는 등의 작업을 수행할 수 있습니다.
이 글은 데비안 10에서 Nginx 서버 블록을 설정하는 방법을 설명합니다.
필수 구성 요소
다음 필수 구성 요소를 충족해야 합니다.
- 공용 서버 IP를 가리키는 도메인 이름
- 데비안 시스템에 Nginx가 설치
- 루트 또는 sudo 권한이 있는 사용자로 로그인
일부 설명서에서는 서버 블록이라는 용어를 가상 호스트라고 합니다. 가상 호스트는 Apache 용어입니다.
디렉토리 구조를 작성
문서 루트는 도메인 이름의 웹 사이트 파일이 저장되고 요청에 응답하여 서비스되는 디렉토리입니다. 문서 루트는 서버의 모든 디렉토리가 될 수 있습니다.
이 문서의 예는 다음과 같은 디렉토리 구조를 사용합니다.
/var/www/
├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
├── domain3.com
│ └── public_html
기본적으로 /var/www 디렉토리 내에 서버에 호스팅할 각 도메인에 대해 별도의 디렉토리를 생성합니다. 이러한 각 디렉토리 내에 도메인 웹 사이트 파일을 저장할 public_html 디렉토리를 만듭니다.
다음 명령을 실행하여 도메인 example.com의 루트 디렉토리를 생성합니다.
sudo mkdir -p /var/www/example.com/public_html
다음으로 도메인의 문서 루트 디렉토리 내에 index.html 파일을 작성합니다.
sudo nano /var/www/example.com/public_html/index.html
파일을 열고 다음 줄을 붙여넣습니다.
# /var/www/example.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Success! example.com home page!</h1>
</body>
</html>
사용 권한 문제를 방지하려면 도메인 문서 루트 디렉토리의 소유권을 Nginx 사용자(www-data)로 변경하십시오.
sudo chown -R www-data: /var/www/example.com
서버 블록을 작성
기본적으로 Debian 시스템에서는 Nginx 서버 블록 구성 파일이 /etc/nginx/sites-available 디렉토리에 저장됩니다. 구성을 활성화하려면 파일을 /etc/nginx/sites-enabled/ 디렉터리에 심볼 링크해야 합니다.
텍스트 편집기를 열고 다음 서버 블록 파일을 작성합니다.
# /etc/nginx/sites-available/example.com.conf
server {
listen 80;
listen [::]:80;
root /var/www/example.com/public_html;
index index.html;
server_name example.com www.example.com;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
}
구성 파일의 이름은 원하는 대로 지정할 수 있지만 일반적으로 도메인 이름을 사용하는 것이 가장 좋습니다.
파일에서 사이트 사용 디렉토리로 심볼 링크를 작성하여 새 서버 블록 파일을 사용 가능으로 설정합니다.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Nginx 구성에 올바른 구문이 있는지 테스트합니다.
sudo nginx -t
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful
Nginx 서비스를 다시 시작하여 변경 내용을 적용합니다.
sudo systemctl restart nginx
서버 블록이 예상대로 작동하는지 확인하려면 브라우저에서 http://example.com을 열면 다음과 같은 내용이 나타납니다.
Nginx 서버 블록을 생성하고 단일 데비안 서버에서 여러 도메인을 호스팅하는 방법을 보여주었습니다. 다른 도메인에 대한 서버 블록을 작성하려면, 동일한 단계를 반복합니다.
SSL 인증서로 웹 사이트를 보호하려는 경우 무료 Letscrypt SSL 인증서를 생성하고 설치할 수 있습니다.
참조
https://linuxize.com/post/how-to-set-up-nginx-server-blocks-on-debian-10/
'SW > 리눅스' 카테고리의 다른 글
Linux : CentOS 8 : MongoDB 설치 방법, 예제, 명령어 (0) | 2022.07.16 |
---|---|
Linux : CentOS 8 : Redmine 설치 및 구성 방법, 예제, 명령어 (0) | 2022.07.15 |
CentOS 8 : TensorFlow 설치 방법, 예제, 명령어 (0) | 2022.07.13 |
Linux : Last : 명령어, 사용 방법, 예제 (0) | 2022.07.12 |
Linux : Ubuntu 18.04 : VMware Tools 설치 방법, 예제, 명령어 (0) | 2022.07.11 |