Ubuntu 14.04 LTS에서 Nginx 서버 블록(가상 호스트)을 설정하는 방법

Ubuntu 14.04 LTS에서 Nginx 서버 블록(가상 호스트)을 설정하는 방법

2022-06-01 last update

13 minutes reading Ubuntu Getting Started Nginx

소개


Nginx 웹 서버를 사용할 때 server blocks (Apache의 가상 호스트와 유사) 를 사용하여 구성 상세 정보를 봉인하고 한 서버에서 여러 도메인을 호스팅할 수 있습니다.
이 설명서에서는 Ubuntu 14.04 서버의 Nginx에서 서버 블록을 설정하는 방법에 대해 설명합니다.

선결 조건


이 강좌에서, 우리는 sudo 권한을 가진 비루트 사용자를 사용할 것입니다.이러한 사용자를 구성하지 않은 경우 Ubuntu 14.04 initial server setup 설명서의 단계 1-4에 따라 구성할 수 있습니다.
서버에 Nginx를 설치해야 합니다.서버에 전체 LEMP(Linux, Nginx, MySQL 및 PHP) 스택을 설치하려면 설명서setting up a LEMP stack in Ubuntu 14.04를 따릅니다.Nginx만 필요한 경우 다음을 입력하여 설치할 수 있습니다.
sudo apt-get update
sudo apt-get install nginx
이러한 요구 사항을 충족하면 이 안내서를 계속 사용할 수 있습니다.
프레젠테이션 목적으로 Nginx 서버를 사용하여 두 도메인을 설정합니다.이 안내서에서 사용할 도메인 이름은 example.comtest.com 입니다.
여기에서 안내서를 찾을 수 있습니다.두 개의 대체 도메인 이름을 사용할 수 없으면 가상 이름을 잠시 사용하십시오. 나중에 로컬 컴퓨터를 설정하여 설정을 테스트하는 방법을 보여 드리겠습니다.

1단계 - 새 문서 루트 디렉토리 설정


기본적으로 Ubuntu 14.04의 Nginx는 서버 블록을 기본적으로 사용합니다.다음 디렉토리 외부에 문서를 제공하도록 구성됩니다.
/usr/share/nginx/html
디렉터리의 내용을 처리하기 쉽기 때문에 기본값을 사용하지 않습니다.how to set up domain names with DigitalOcean 때문에 Ubuntu의 Nginx 패키지는 기본적으로 문서 루트 디렉터리로 사용되지 않습니다.
우리는 사용자이기 때문에 패키지 관리자가 아니기 때문에 Nginx에게 이것이 바로 우리가 원하는 문서 루트가 있는 위치라고 알려줄 수 있습니다.구체적으로 말하자면, 우리는 /var/www 디렉터리에서 각 사이트에 디렉터리를 만들고, 이 디렉터리 아래에 /var/www 이라는 디렉터리를 가지고 실제 파일을 저장하기를 희망한다.
우선, 우리는 필요한 디렉터리를 만들어야 한다.우리는 다음 명령을 사용하여 이 조작을 실행할 수 있다./var/www 플래그 표시html 경로에 필요한 부모 디렉토리를 만듭니다.
  1. sudo mkdir -p /var/www/example.com/html
  2. sudo mkdir -p /var/www/test.com/html
현재 디렉터리를 만들었습니다. 일반 사용자에게 소유권을 이전해야 합니다.현재 로그인한 사용자 계정을 환경 변수 -p 로 대체할 수 있습니다.이것은 방문자가 내용을 만들지 못하도록 이 디렉터리에 파일을 만들 수 있도록 합니다.
  1. sudo chown -R $USER:$USER /var/www/example.com/html
  2. sudo chown -R $USER:$USER /var/www/test.com/html
mkdir 값을 수정하지 않으면, 웹 루트 디렉터리의 권한이 정확해야 하지만, 다음 내용을 입력해서 확인할 수 있습니다.
  1. sudo chmod -R 755 /var/www
우리의 디렉터리 구조는 현재 이미 설정되어 있어서 계속할 수 있다.

2단계 - 각 사이트에 대한 샘플 페이지 만들기


현재 우리는 디렉터리 구조를 설정해서 모든 사이트에 기본 페이지를 만들어서 내용을 표시할 수 있도록 합니다.
첫 번째 도메인에 생성된 파일$USER:
  1. nano /var/www/example.com/html/index.html
이 파일에서, 우리는 현재 방문한 사이트를 표시하는 진정한 기본 파일을 만들 것입니다.다음과 같이 표시됩니다.
<html>
    <head>
        <title>Welcome to Example.com!</title>
    </head>
    <body>
        <h1>Success!  The example.com server block is working!</h1>
    </body>
</html>
완료되면 파일을 저장하고 닫습니다.
두 번째 사이트의 파일은 기본적으로 같기 때문에 다음 그림과 같이 두 번째 문서 루트 디렉터리로 복사할 수 있습니다.
  1. cp /var/www/example.com/html/index.html /var/www/test.com/html/
이제 편집기에서 새 파일을 열고 수정하여 두 번째 도메인을 참조할 수 있습니다.
  1. nano /var/www/test.com/html/index.html
<html>
    <head>
        <title>Welcome to Test.com!</title>
    </head>
    <body>
        <h1>Success!  The test.com server block is working!</h1>
    </body>
</html>
완료되면 이 파일을 저장하고 닫습니다.현재 두 도메인의 방문자에게 표시할 수 있는 페이지가 있습니다.

3단계 - 각 도메인에 대한 서버 블록 파일 생성


이제 저희가 제공하고자 하는 내용이 생겼습니다. Nginx가 어떻게 하는지 알려주기 위해 서버 블록을 실제로 만들어야 합니다.
기본적으로 Nginx는 umask라는 서버 블록을 포함하고 있으며, 이를 자체 설정된 템플릿으로 사용할 수 있습니다.우리는 먼저 첫 번째 영역의 서버 블록을 설계한 다음에 두 번째 영역으로 복사하고 필요한 수정을 할 것이다.

첫 번째 서버 블록 파일 만들기


위에서 설명한 대로 기본 파일을 복사하여 첫 번째 서버 블록 구성 파일을 만듭니다.
  1. sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com
이제 텍스트 편집기에서 만든 새 파일을 루트 권한으로 엽니다.
  1. sudo nano /etc/nginx/sites-available/example.com
메모된 행을 무시하면 파일은 다음과 유사합니다.
server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }
}
우선,listen 명령을 확인해야 합니다.하나의 서버 블록만 index.html 규범을 가질 수 있습니다.이 지정은 요청한 default 가 사용 가능한 서버 블록과 일치하지 않으면 어느 블록이 요청에 서버를 제공해야 하는지를 지정합니다.
기본적으로 서버 블록 구성이 비활성화되므로 default_server 옵션을 서버 블록 또는 다른 사이트의 서버 블록에 배치할 수 있습니다.이 서버 블록에 server_name 옵션의 활성화 상태를 유지하지만 상황에 가장 적합한 옵션을 선택할 수 있습니다.
다음으로 조정해야 할 것은 문서 루트입니다. default_server 명령에 의해 지정됩니다.생성한 사이트 문서 루트 디렉토리로 이동합니다.
root /var/www/example.com/html;
참고: 각 Nginx 문은 세미콜론(;)으로 끝나야 합니다.따라서 문제가 발생하면 각 노선을 확인하십시오.
다음은 첫 번째 영역의 요청과 일치하도록 default_server 을 수정해야 합니다.우리는 일치하고 싶은 별명도 추가할 수 있다.우리는 프레젠테이션을 위해 root 별명을 추가할 것입니다.
server_name example.com www.example.com;
완료되면 파일은 다음과 같습니다.
server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/example.com/html;
    index index.html index.htm;

    server_name example.com www.example.com;

    location / {
        try_files $uri $uri/ =404;
    }
}
이것이 바로 우리가 필요로 하는 기본 설정이다.종료하기 위해 파일을 저장하고 닫습니다.

두 번째 서버 블록 파일 만들기


이제 두 번째 파일의 기초로 사용할 수 있는 초기 서버 블록 설정이 있습니다.새 파일을 생성하려면 복사:
  1. sudo cp /etc/nginx/sites-available/example.com /etc/nginx/sites-available/test.com
편집기에서 루트 권한으로 새 파일을 열려면 다음과 같이 하십시오.
  1. sudo nano /etc/nginx/sites-available/test.com
이 새 파일에서 우리는 server_name 명령을 다시 확인해야 한다.이전 파일에서 www.example.com 옵션이 활성화된 경우 이 파일에서 삭제해야 합니다.또한 주소/포트 조합당 한 번만 지정할 수 있으므로 listen 옵션을 제거해야 합니다.
listen 80;
listen [::]:80;
두 번째 도메인의 문서 루트를 가리키도록 documentroot 명령을 조정합니다.
root /var/www/test.com/html;
두 번째 도메인 및 별칭과 일치하도록 조정default_server:
server_name test.com www.test.com;
파일은 다음과 같습니다.
server {
    listen 80;
    listen [::]:80;

    root /var/www/test.com/html;
    index index.html index.htm;

    server_name test.com www.test.com;

    location / {
        try_files $uri $uri/ =404;
    }
}
완료되면 파일을 저장하고 닫습니다.

4단계 - 서버 블록 활성화 및 Nginx 재시작


서버 블록을 만들었습니다. 사용해야 합니다.
이 파일부터 ipv6only=on 디렉터리까지의 기호 링크를 만들어서 이를 실현할 수 있습니다. Nginx는 시작하는 동안 이 디렉터리를 읽습니다.
다음 내용을 입력하여 이러한 링크를 만들 수 있습니다.
  1. sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  2. sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
이 파일들은 현재 enabled 디렉터리에 있습니다.그러나 템플릿으로 사용되는 기본 서버 블록 파일은 현재 사용되고 있으며 server_name 매개 변수가 설정된 파일과 충돌합니다.
기호 링크만 삭제하면 기본 서버 블록 파일을 비활성화할 수 있습니다.여전히 sites-enabled 디렉토리에서 참조할 수 있지만 Nginx는 시작할 때 읽지 않습니다.
  1. sudo rm /etc/nginx/sites-enabled/default
기본 Nginx 구성 파일에서 설정을 빠르게 조정해야 합니다.다음 내용을 입력하여 엽니다.
  1. sudo nano /etc/nginx/nginx.conf
우리는 단지 주석 한 줄을 취소하기만 하면 된다.다음 위치에서 메모를 찾아 제거합니다.
server_names_hash_bucket_size 64;
이제 변경 사항을 활성화하기 위해 Nginx를 다시 시작하려고 합니다.다음을 입력할 수 있습니다.
  1. sudo service nginx restart
Nginx는 현재 두 도메인 이름에 대해 서비스를 제공해야 합니다.

5단계 - 로컬 호스트 파일 설정(선택 사항)


도메인 이름 대신 위조 값을 사용하는 경우 Nginx 서버 블록 구성을 임시로 테스트할 수 있도록 로컬 컴퓨터 구성을 수정할 수 있습니다.
이렇게 하면 다른 방문자가 사이트를 제대로 볼 수 없지만 각 사이트에 독립적으로 액세스하여 구성을 테스트할 수 있습니다.이것은 기본적으로 일반적으로 DNS에서 도메인 이름을 해석하는 요청을 차단함으로써 이루어진다.반대로 도메인 이름을 요청할 때 로컬 컴퓨터에서 액세스할 IP 주소를 설정할 수 있습니다.
이 단계에서는 VPS 서버가 아닌 로컬 컴퓨터에서 작업해야 합니다.이 작업을 수행하려면 루트 액세스 권한이 있거나 관리 그룹의 구성원이거나 시스템 파일을 편집할 수 있어야 합니다.
집에 있는 Mac 또는 Linux 컴퓨터의 경우 다음 내용을 입력하여 원하는 파일을 편집할 수 있습니다.
  1. sudo nano /etc/hosts
Windows를 사용하는 경우 여기에서 사용할 수 있습니다Debian policy about packages utilizing /var/www.
서버에 대한 공통 IP 주소와 라우팅할 도메인이 필요합니다.내 서버의 공용 IP 주소가 default_server 인 경우 다음과 같이 파일에 행을 추가합니다.
127.0.0.1   localhost
127.0.0.1   guest-desktop
111.111.111.111 example.com
111.111.111.111 test.com
이것은 sites-available111.111.111.111 에 대한 요청을 차단하고 서버에 전송합니다. 만약 우리가 실제로 사용하고 있는 도메인을 가지고 있지 않다면, 이것은 우리가 원하는 것입니다.
완료되면 파일을 저장하고 닫습니다.

6단계 - 테스트 결과


현재 모든 설정을 마쳤습니다. 서버 블록이 정상적으로 작동하는지 테스트해야 합니다.웹 브라우저의 도메인에 액세스하여 다음을 수행할 수 있습니다.
http://example.com
다음 페이지가 표시됩니다.

두 번째 도메인 이름에 액세스하면 다음과 같은 약간 다른 웹 사이트를 볼 수 있습니다.
http://test.com
Nginx second server block
만약 이 두 사이트가 모두 작동한다면, 당신은 이미 Nginx를 사용하여 두 개의 독립된 서버 블록을 설정하는 데 성공했습니다.
테스트를 위해 로컬 컴퓨터의 example.com 파일을 조정한 경우 추가된 줄을 삭제해야 할 수도 있습니다.
대중을 위한 사이트의 서버에 도메인 이름을 접근해야 한다면, 각 사이트에 도메인 이름을 구매해야 할 수도 있습니다.너는 여기서 공부할 수 있다find instructions for altering your hosts file.

결론


현재, 같은 서버에서 위탁 관리하고자 하는 모든 영역에 서버 블록을 만들 수 있어야 합니다.하드웨어가 데이터를 처리할 수 있는 한 생성할 수 있는 서버 블록의 수량은 어떠한 실제 제한도 없다.