웹사이트 검색

NGINX를 사용하여 이름 기반 및 IP 기반 가상 호스트(서버 블록)를 설정하는 방법


Nginx는 개발 및 출시된 지 비교적 짧은 기간(10년 남짓) 동안 높은 성능과 낮은 메모리 사용량으로 인해 웹 서버 중에서 지속적이고 꾸준한 성장을 경험했습니다.

Nginx는 무료 오픈 소스 소프트웨어이기 때문에 Linux 및 *nix 서버뿐만 아니라 Microsoft Windows에서도 전 세계 수천 명의 웹 서버 관리자가 채택했습니다.

놓치지 마세요: Apache 이름 기반 및 IP 기반 가상 호스팅

Apache에 가장 익숙한 사람들에게 Nginx는 학습 곡선이 다소 가파르지만(적어도 내 경우에는 그랬습니다) 몇 가지를 설정하면 확실히 효과가 있습니다. 사이트의 트래픽 및 리소스 사용 통계를 보기 시작합니다.

이 문서에서는 Nginx를 사용하여 CentOS/RHEL에서 이름 기반ip 기반 가상 호스팅을 설정하는 방법을 설명합니다. 7 서버와 Debian 8 및 파생 제품(Ubuntu 15.04 및 그 파생 버전부터 시작).

이 기사에 대한 테스트 시나리오는 다음과 같습니다.

  1. 운영 체제: Debian 8 Jessie 서버 [IP 192.168.0.25]
  2. 게이트웨이: 라우터 [IP 192.168.0.1]
  3. 웹 서버: Nginx 1.6.2-5
  4. 더미 도메인: www.tecmintlovesnginx.com 및 www.nginxmeanspower.com.

Nginx 웹 서버 설치

아직 설치하지 않았다면 계속 진행하기 전에 Nginx를 설치하세요. 시작하는 데 도움이 필요한 경우 이 사이트에서 nginx를 빠르게 검색하면 이 주제에 대한 여러 기사가 표시됩니다. 이 페이지 상단의 돋보기 아이콘을 클릭하고 키워드 nginx를 검색하세요. 이 사이트에서 기사를 검색하는 방법을 모르더라도 nginx 기사에 대한 링크를 추가했기 때문에 걱정하지 마세요. 각 Linux 배포판에 따라 설치하면 됩니다.

  1. RHEL/CentOS 7의 소스에서 Nginx 설치 및 컴파일
  2. Debian 8에 Nginx 웹 서버 설치
  3. Fedora 23에 MariaDB 및 PHP/PHP-FPM과 함께 Nginx 설치
  4. Ubuntu 15.10 서버/데스크탑에 Nginx 웹 서버 설치
  5. Nginx 웹사이트 디렉토리를 비밀번호로 보호하세요

그런 다음 이 튜토리얼의 나머지 부분을 계속 진행할 준비를 하세요.

Nginx에서 이름 기반 가상 호스트 생성

이미 알고 계시겠지만, 가상 호스트는 단일 클라우드 VPS 또는 물리적 서버에서 Nginx가 제공하는 웹사이트입니다. 그러나 Nginx 문서에서는 "서버 블록"이라는 용어를 대신 찾을 수 있지만 기본적으로 서로 다른 이름으로 불리는 동일한 것입니다.

가상 호스트를 설정하는 첫 번째 단계는 기본 구성 파일(/etc/nginx/nginx.conf )에서 하나 이상의 서버 블록을 생성하는 것입니다(이 경우에는 각 더미 도메인에 대해 하나씩 두 개 생성). ) 또는 /etc/nginx/sites-available 내부에 있습니다.

이 디렉토리 (sites-available)에 있는 구성 파일의 이름은 원하는 대로 설정할 수 있지만 도메인 이름을 사용하는 것이 좋으며 추가로 .conf 확장자는 구성 파일임을 나타냅니다.

이러한 서버 블록은 비교적 복잡할 수 있지만 기본 형식은 다음 내용으로 구성됩니다.

/etc/nginx/sites-available/tecmintlovesnginx.com.conf에서:

server {  
    listen       80;  
    server_name  tecmintlovesnginx.com www.tecmintlovesnginx.com;
    access_log  /var/www/logs/tecmintlovesnginx.access.log;  
    error_log  /var/www/logs/tecmintlovesnginx.error.log error; 
        root   /var/www/tecmintlovesnginx.com/public_html;  
        index  index.html index.htm;  
}

/etc/nginx/sites-available/nginxmeanspower.com.conf에서:

server {  
    listen       80;  
    server_name  nginxmeanspower.com www.nginxmeanspower.com;
    access_log  /var/www/logs/nginxmeanspower.access.log;  
    error_log  /var/www/logs/nginxmeanspower.error.log error;
    root   /var/www/nginxmeanspower.com/public_html;  
    index  index.html index.htm;  
}

위의 블록을 사용하여 가상 호스트 설정을 시작하거나 /etc/nginx/sites-available/default(Debian )에서 기본 뼈대를 사용하여 파일을 생성할 수 있습니다. ) 또는 /etc/nginx/nginx.conf.default(CentOS).

복사한 후 권한과 소유권을 변경합니다.

chmod 660  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chmod 660  /etc/nginx/sites-available/nginxmeanspower.com.conf

데비안과 파생상품

chgrp www-data  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chgrp www-data  /etc/nginx/sites-available/nginxmeanspower.com.conf

CentOS 및 RHEL

chgrp nginx  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chgrp nginx  /etc/nginx/sites-available/nginxmeanspower.com.conf

완료되면 혼란이나 충돌을 피하기 위해 샘플 파일을 삭제하거나 다른 이름으로 이름을 바꿔야 합니다.

또한 로그용 디렉터리(/var/www/logs)를 만들고 Nginx 사용자(nginx 또는 www-data)에게 제공해야 합니다. (CentOS를 실행하는지 Debian을 실행하는지에 따라 다름) 이에 대한 읽기 및 쓰기 권한은 다음과 같습니다.

mkdir /var/www/logs
chmod -R 660 /var/www/logs
chgrp <nginx user> /var/www/logs

이제 사이트 활성화 디렉터리에 이 파일에 대한 심볼릭 링크를 생성하여 가상 호스트를 활성화해야 합니다.

ln -s /etc/nginx/sites-available/tecmintlovesnginx.com.conf /etc/nginx/sites-enabled/tecmintlovesnginx.com.conf
ln -s /etc/nginx/sites-available/nginxmeanspower.com.conf /etc/nginx/sites-enabled/nginxmeanspower.com.conf

다음으로, 각 가상 호스트에 대해 /var/www//public_html 내에 index.html이라는 샘플 HTML 파일을 생성합니다( 필요에 따라). 필요에 따라 다음 코드를 수정합니다.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Tecmint loves Nginx</title>
  </head>
  <body>
  <h1>Tecmint loves Nginx!</h1>
  </body>
</html>

마지막으로 Nginx 구성을 테스트하고 웹 서버를 시작합니다. 구성에 오류가 있으면 수정하라는 메시지가 표시됩니다.

nginx -t && systemctl start nginx

기본 이름 확인 전략으로 로컬 시스템의 /etc/hosts 파일에 다음 항목을 추가합니다.

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

그런 다음 웹 브라우저를 실행하고 위에 나열된 URL로 이동합니다.

Nginx에 더 많은 가상 호스트를 추가하려면 위에 설명된 단계를 필요한 만큼 반복하세요.

Nginx의 IP 기반 가상 호스트

모든 호스트가 동일한 IP 주소를 통해 액세스할 수 있는 이름 기반 가상 호스트와 달리 IP 기반 가상 호스트에는 다른 IP:포트 가 필요합니다. 각각 조합.

이를 통해 웹 서버는 요청이 수신된 IP 주소와 포트에 따라 다른 사이트를 반환할 수 있습니다. 이름 기반 가상 호스트는 IP 주소와 포트를 공유하는 이점을 제공하므로 범용 웹 서버의 표준이며 설치된 Nginx 버전이 서버 이름 표시를 지원하지 않는 한 선택 설정이어야 합니다. (SNI), 이는 정말 오래된 버전이거나 –with-http_ssl_module 컴파일 옵션 없이 컴파일되었기 때문입니다.

만약에,

nginx -V

아래에 강조 표시된 옵션을 반환하지 않습니다.

원래 설치 방법에 따라 Nginx 버전을 업데이트하거나 다시 컴파일해야 합니다. Nginx를 컴파일하려면 아래 기사를 따르십시오.

  1. RHEL/CentOS 7의 소스에서 Nginx 설치 및 컴파일

잘 진행되었다고 가정하면, IP 기반 가상 호스트의 또 다른 전제 조건은 별도의 IP를 별도의 네트워크 인터페이스에 할당하거나 가상 호스트를 사용하여 사용할 수 있다는 것입니다. IP(IP 별칭이라고도 함).

Debian에서 IP 별칭 지정을 수행하려면(eth0을 사용한다고 가정) /etc/network/interfaces를 다음과 같이 편집하세요.

데비안과 파생상품

auto eth0:1
iface eth0:1 inet static
        address 192.168.0.25
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
auto eth0:2
iface eth0:2 inet static
        address 192.168.0.26
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

위의 예에서는 eth0: eth0:1(192.168.0.25) 및 eth0:2(192.168.0.26)에서 두 개의 가상 NIC를 만듭니다.

CentOS 및 RHEL

CentOS에서 /etc/sysconfig/network-scripts/ifcfg-enp0s3의 이름을 ifcfg-enp0s3:1로 바꾸고 ifcfg-enp0s3:2 로 복사본을 만듭니다. 를 선택한 후 다음 줄을 각각 변경하세요.

DEVICE="enp0s3:1"
IPADDR=192.168.0.25

그리고

DEVICE="enp0s3:2"
IPADDR=192.168.0.26

완료되면 네트워크 서비스를 다시 시작하십시오.

systemctl restart networking

다음으로, 이 문서에서 이전에 정의한 서버 블록을 다음과 같이 변경합니다.

/etc/nginx/sites-available/tecmintlovesnginx.com.conf에서:

listen 192.168.0.25:80

/etc/nginx/sites-available/nginxmeanspower.com.conf에서:

listen 192.168.0.26:80

마지막으로 변경 사항을 적용하려면 Nginx를 다시 시작하세요.

systemctl restart nginx

그에 따라 로컬 /etc/hosts를 업데이트하는 것을 잊지 마세요.

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

따라서 포트 80에서 192.168.0.25192.168.0.26에 대한 각 요청은 tecmintlovesnginx.com을 반환하고 nginxmeanspower.com 각각:

위 이미지에서 볼 수 있듯이 이제 두 개의 서로 다른 IP 별칭을 가진 서버의 유일한 NIC를 사용하는 두 개의 IP 기반 가상 호스트가 있습니다.

요약

이 튜토리얼에서는 Nginx에서 이름 기반IP 기반 가상 호스트를 모두 설정하는 방법을 설명했습니다. 비록 첫 번째 옵션을 사용하고 싶을 수도 있지만, 필요할 경우 다른 옵션도 여전히 있다는 것을 아는 것이 중요합니다. 이 가이드에 설명된 사실을 고려한 후에 결정을 내리도록 하세요.

또한 Nginx 문서를 북마크에 추가하여 서버 블록을 생성하고(지금은 Nginx 언어로 이야기하고 있습니다) 구성하는 동안 자주 참조할 수 있습니다. 이 뛰어난 웹 서버를 구성하고 조정하는 데 사용할 수 있는 모든 옵션을 믿지 못할 것입니다.

언제나 그렇듯이, 이 기사에 대해 질문이나 의견이 있으면 주저하지 말고 아래 양식을 사용하여 연락해 주세요. 우리는 귀하의 의견을 기다리며 이 가이드에 대한 귀하의 의견을 환영합니다.