Nginx 서버 블록을 사용하면 한 컴퓨터에서 두 개 이상의 웹 사이트를 실행할 수 있습니다. 서버 블록을 사용하여 사이트 문서 루트(웹 사이트 파일이 들어 있는 디렉토리)를 지정하고, 각 사이트에 대해 별도의 보안 정책을 만들고, 각 사이트에 대해 서로 다른 SSL 인증서를 사용하는 등의 작업을 수행할 수 있습니다.
이 문서에서는 Ubuntu 18.04에서 Apache Virtual Hosts와 유사한 Nginx 서버 블록을 설정하는 방법에 대한 단계별 지침을 제공합니다.
필수 구성 요소
자습서를 계속 진행하기 전에 다음 필수 구성 요소를 충족했는지 확인합니다.
- 공용 서버 IP를 가리키는 도메인 이름이 있습니다. example.com을 사용할 것입니다.
- 다음 지침에 따라 Nginx를 설치했습니다.
- sudo 권한을 가진 사용자로 로그인했습니다.
일부 설명서에서는 서버 블록을 가상 호스트라고 합니다. 가상 호스트는 Apache 용어입니다.
디렉토리 구조를 작성
문서 루트는 도메인 이름에 대한 웹 사이트 파일이 저장되고 요청에 대한 응답으로 제공되는 디렉토리입니다. 문서 루트를 원하는 위치로 설정할 수 있습니다.
다음 디렉토리 구조를 사용합니다.
/var/www/
├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
├── domain3.com
│ └── public_html
기본적으로 /var/ww 디렉토리 내에 서버에서 호스팅할 각 도메인에 대해 별도의 디렉토리를 만듭니다. 각 디렉토리 내에 도메인 웹 사이트 파일을 저장할 public_html 디렉토리를 작성합니다.
example.com 도메인의 루트 디렉터리를 만들어 보겠습니다.
sudo mkdir -p /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>
이 예에서는 sudo 사용자로 명령을 실행 중이며 새로 생성된 파일과 디렉터리는 루트 사용자가 소유합니다.
사용 권한 문제를 방지하려면 도메인 문서 루트 디렉토리의 소유권을 Nginx 사용자(www-data)로 변경합니다.
sudo chown -R www-data: /var/www/example.com
서버 블록 작성
기본적으로 Ubuntu 시스템에서 Nginx 서버 블록 구성 파일은 /etc/nginx/sites-enable/ 디렉토리에 대한 심볼 링크를 통해 사용할 수 있는 /etc/nginx/sites-available/ 디렉토리에 저장됩니다.
원하는 편집기를 열고 다음 서버 블록 파일을 만듭니다.
# /etc/nginx/sites-available/example.com
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;
}
}
구성 파일의 이름을 원하는 대로 지정할 수 있지만 일반적으로 도메인 이름을 사용하는 것이 가장 좋습니다.
새 서버 블록 파일을 사용 가능으로 설정하려면 파일에서 사이트 사용 디렉토리에 심볼 링크를 만듭니다. Nginx는 이 링크를 시작할 때 읽습니다.
sudo ln -s /etc/nginx/sites-available/example.com /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을 선택한 브라우저에서 열면 내용이 표시됩니다.
정리
단일 Ubuntu 서버에서 여러 도메인을 호스팅하기 위한 Nginx 서버 블록 구성을 만드는 방법에 대해 배웠습니다. 위에서 설명한 단계를 반복하고 모든 도메인에 대한 추가 서버 블록을 만들 수 있습니다.
'SW > 리눅스' 카테고리의 다른 글
Ubuntu 18.04 : Tomcat 8.5 설치 방법, 예제, 명령어 (0) | 2020.10.11 |
---|---|
Ubuntu 18.04 : Nginx에 Let's Encrypt로 SSL/HTTPS 적용 방법, 예제, 명령어 (3) | 2020.10.10 |
Ubuntu 18.04 : Nginx 설치 방법, 예제, 명령어 (0) | 2020.10.08 |
Ubuntu 16.04 에서 18.04로 업그레이드 하는 방법, 예제, 명령어 (0) | 2020.10.07 |
Cent OS 7 : Apache 설치 방법, 예제, 명령어 (0) | 2020.10.06 |