Linux 서버에 Nginx 설치

이 섹션에서는 Linux 서버에 Nginx를 설치하는 단계를 설명합니다.

Debian 기반(운영 체제는 Ubuntu)

sudo 권한이 있는 루트가 아닌 일반 사용자를 준비하고 이 사용자를 사용하여 Linux 서버에 로그인한 후 다음 단계를 수행하십시오.

단계

Nginx는 Ubuntu의 기본 리포지토리에서 사용할 수 있으므로 apt 패키징 시스템을 사용하여 이러한 리포지토리에서 Nginx를 설치할 수 있습니다.

최신 패키지 목록에 액세스할 수 있도록 다음 명령을 실행하여 로컬 패키지 인덱스를 업데이트합니다.

sudo 적절한 업데이트

다음 명령을 실행하여 nginx를 설치합니다. sudo apt install nginx

이 두 명령을 실행한 후 apt는 Nginx와 필요한 모든 종속성을 서버에 설치합니다.

Nginx를 테스트하기 전에 서비스에 대한 액세스를 허용하도록 방화벽을 조정해야 합니다. Nginx는 설치 중에 자신을 ufw 서비스로 등록하여 Nginx에 직접 액세스할 수 있습니다.

다음 명령을 실행하여 ufw가 사용할 수 있는 애플리케이션 구성을 나열합니다.

sudo ufw app list

명령을 실행하면 다음 화면과 유사한 애플리케이션 구성 파일 목록이 표시됩니다.

출력사용 가능한 애플리케이션: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

보시다시피 Nginx에는 사용 가능한 세 가지 구성 파일이 있습니다.

  • Nginx Full : 이 프로필은 포트 80(일반, 암호화되지 않은 웹 트래픽)과 포트 443(TLS/SSL 암호화된 트래픽)을 모두 엽니다.

  • Nginx HTTP : 이 프로필은 포트 80(암호화되지 않은 일반 웹 트래픽)만 엽니다.

  • Nginx HTTPS : 이 구성 파일은 포트 443(TLS/SSL 암호화 트래픽)만 엽니다.

구성한 트래픽을 계속 허용하는 가장 제한적인 프로필을 활성화하는 것이 좋습니다. 여기에서는 포트 80의 트래픽만 허용하면 됩니다.

Nginx 설치가 완료되면 Ubuntu가 Nginx를 시작하고 웹 서버가 실행됩니다.

다음 명령을 실행하여 systemd init 시스템에서 서비스가 실행 중인지 확인합니다.

systemctl status nginx

출력은 다음과 유사하며 서비스가 정상적으로 실행되고 있음을 나타냅니다.

Output● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-04-20 16:08:19 UTC; 3 days ago
     Docs: man:nginx(8)
 Main PID: 2369 (nginx)
    Tasks: 2 (limit: 1153)
   CGroup: /system.slice/nginx.service
           ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─2380 nginx: worker process

서비스가 정상적으로 실행되고 있는지 확인하는 또 다른 방법인 Nginx에서 페이지를 요청하는 방법을 사용할 수도 있습니다.

서버의 IP 주소로 이동하여 기본 Nginx 로그인 페이지를 방문하여 서비스가 제대로 작동하는지 확인할 수 있습니다.

서버의 IP 주소를 모르는 경우 다음 명령을 실행하십시오.

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

반환된 정보를 얻은 후 브라우저에서 하나씩 시도하여 액세스할 수 있는지 확인할 수 있습니다.

또는 다음 명령을 실행하여 퍼블릭 IP 주소를 가져옵니다.

curl -4 icanhazip.com

서버의 IP 주소를 얻은 후 브라우저의 주소에 http:// server IP 를 입력하면 다음과 같은 화면이 나오며 서비스가 정상적으로 실행되고 있음을 확인할 수 있습니다.

웹 서비스 중지

sudo systemctl stop nginx

웹 서비스 중지 후 서비스 시작

sudo systemctl start nginx

웹 서비스를 다시 시작하십시오.

sudo systemctl restart nginx

구성 변경 후 Nginx 연결 해제 없이 다시 로드

sudo systemctl reload nginx

기본적으로 Nginx는 서버가 시작될 때 자동으로 시작되도록 구성되어 있습니다. 이 동작은 다음을 실행하여 비활성화할 수 있습니다.

sudo systemctl disable nginx

부팅 시 시작되도록 서비스를 다시 활성화합니다.

sudo systemctl enable nginx

Nginx 웹 서버를 사용할 때 서버 블록을 사용하여 구성 세부 정보를 캡슐화하고 단일 서버에서 여러 도메인을 호스트할 수 있습니다. 예를 들어 example.com 이라는 도메인 이름을 만들려면 고유한 도메인 이름을 만들 수 있습니다.

Nginx에는 기본적으로 "/var/www/html" 디렉토리의 문서를 제공하도록 구성된 서버 블록이 활성화되어 있습니다.

① 다음 명령을 실행하여 example.com에 대한 디렉토리를 생성하고 -p 플래그를 사용하여 필요한 모든 상위 디렉토리를 생성합니다.

sudo mkdir -p /var/www/example.com/html

② $USER 환경 변수를 사용하여 다음 명령을 실행하여 디렉터리 소유권을 할당합니다 .

sudo chown -R $USER:$USER /var/www/example.com/html

③ umask 값을 수정하지 않았다면 네트워크 루트 디렉토리의 권한이 정확해야 합니다. 다음 명령을 실행하여 권한이 올바른지 확인할 수 있습니다.

sudo chmod -R 755 /var/www/example.com

④ 다음 명령을 실행하여 nano를 사용하여 샘플 "index.html" 페이지를 생성합니다.

nano /var/www/example.com/html/index.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>

⑤ 다음 명령어를 실행하여 새로운 서버 블록을 생성합니다.

sudo vi /etc/nginx/sites-available/example.com

다음 내용을 "example.com"에 붙여넣고 루트의 디렉터리 및 도메인 이름을 업데이트합니다.

server {
        listen 80;
        listen [::]:80;
 
        root /var/www/example.com/html;
        index index.html index.htm index.nginx-debian.html;
 
        server_name example.com www.example.com;
 
        location / {
                try_files $uri $uri/ =404;
        }
}

⑥ 다음 명령을 실행하여 시작 시 Nginx에서 읽은 사이트 활성화 디렉토리에 대한 링크를 생성하여 파일을 활성화합니다.

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

두 개의 서버 블록이 이제 사용 가능하며 listen 및 server_name 지시문을 기반으로 요청에 응답하도록 구성됩니다.

  • example.com: example.com 및 www.example.com에 대한 요청에 응답합니다.

  • 기본: 다른 두 모듈과 일치하지 않는 포트 80의 모든 요청에 ​​응답합니다.

⑦다른 서버 이름을 추가하여 발생할 수 있는 해시 버킷 메모리 문제를 방지하려면 "/etc/nginx/nginx.conf" 파일에서 값을 조정해야 합니다.

다음 명령을 실행하여 파일을 엽니다.

sudo vi /etc/nginx/nginx.conf

"server_names_hash_bucket_size" 지시문을 찾아 "#" 기호를 삭제하여 줄의 주석 처리를 제거하고 저장한 후 닫습니다.

...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

⑧ 다음 명령을 실행하여 Nginx 파일에 구문 오류가 없는지 확인합니다.

sudo nginx -t

이제 Nginx가 도메인 이름을 제공합니다. http://example.com으로 이동하여 이를 테스트 할 수 있으며 다음과 같이 표시됩니다.

콘텐츠

  • /var/www/html: 실제 웹 콘텐츠(기본적으로 이전에 본 기본 Nginx 페이지로만 구성됨)는 /var/www/html 디렉토리에서 제공됩니다. Nginx 구성 파일을 변경하여 변경할 수 있습니다.

서버 구성

  • /etc/nginxNginx 구성 디렉토리. 모든 Nginx 구성 파일은 여기에 있습니다.

  • /etc/nginx/nginx.conf: 기본 Nginx 구성 파일입니다. Nginx 전역 구성을 변경하도록 수정할 수 있습니다.

  • /etc/nginx/sites-available/: 각 사이트 서버 블록을 저장할 수 있는 디렉토리입니다. Nginx는 사이트 활성화 디렉토리에 연결되지 않은 경우 이 디렉토리에 있는 구성 파일을 사용하지 않습니다. 일반적으로 모든 서버 블록 구성은 이 디렉토리에서 수행된 다음 다른 디렉토리에 연결하여 활성화됩니다.

  • /etc/nginx/sites-enabled/: 활성화된 각 사이트 서버 블록이 저장되는 디렉토리입니다. 일반적으로 이러한 파일은 사이트 사용 가능 디렉터리에서 찾을 수 있는 구성 파일에 연결하여 생성됩니다.

  • /etc/nginx/snippets: 이 디렉토리에는 Nginx 구성의 다른 위치에 포함될 수 있는 구성 스니펫이 포함되어 있습니다.

서버 로그

  • /var/log/nginx/access.log: Nginx가 다르게 구성되지 않는 한 웹 서버에 대한 모든 요청이 이 로그 파일에 기록됩니다.

  • /var/log/nginx/error.log: 모든 Nginx 오류가 이 로그에 기록됩니다.

RPM 기준 (운영체제는 CentOS, RedHat 7.6, 낙찰 기린)

단계

sudo yum -y update

Nginx는 CentOS 패키지와 함께 제공되는 표준 리포지토리에서 사용할 수 없으므로 서버에 EPEL 리포지토리를 설치해야 합니다. EPEL은 무료로 사용할 수 있으며 Yum과 함께 설치할 수 있는 많은 오픈 소스 패키지를 제공합니다.

EPEL을 설치하려면 Yum 패키지 관리자를 사용하여 다음 명령을 실행합니다.

sudo yum install -y epel-release

sudo yum –y install nginx

sudo systemctl start nginx

다음 명령을 실행하여 상태를 확인하십시오.

sudo systemctl status nginx

녹색 텍스트는 " active(running) "이어야 합니다. 표시되지 않으면 Nginx 인스턴스가 성공적으로 시작되지 않았을 수 있습니다.

참고: 이미 Apache 서버를 실행 중인 경우 Nginx를 시작하기 전에 비활성화해야 합니다. sudo service httpd stop 명령을 사용하십시오 . Apache를 비활성화하면 현재 호스팅되는 모든 웹사이트가 종료됩니다.

Apache가 비활성화된 경우에도 서버 재부팅 중에 자동으로 시작될 수 있습니다. 다음 명령을 실행하여 자동 시작을 비활성화합니다.

sudo systemctl disable httpd

sudo systemctl enable nginx

CentOS 7에는 기본적으로 방화벽이 활성화되어 있으며 포트 80 및 443에 대한 액세스를 차단합니다. Nginx의 모든 인바운드 HTTPS 및 HTTP 패킷을 차단합니다.

HTTP 및 HTTPS 통신을 허용하려면 다음 명령을 실행하십시오.

firewall-cmd --zone=public --permanent --add-service=http firewall-cmd --zone=public --permanent --add-service=https firewall-cmd --reload

각 명령 다음에 "success"가 표시되어 명령이 올바르게 실행되었음을 나타냅니다.

Nginx가 제대로 실행되고 있는지 확인하는 가장 쉬운 방법은 서버의 공용 IP 주소를 방문하는 것입니다. 웹 브라우저를 열고 " http:// 서버 IP 또는 도메인 이름 " 을 방문하십시오.

다음 명령을 실행하여 서버의 공용 IP 주소를 찾으십시오.

브라우저에서 액세스하면 아래와 같이 Nginx 시작 인터페이스가 표시됩니다.

다음 명령을 실행하여 SElinux가 활성화되었는지 확인하십시오.

getenforce

Enforcing이 출력되면 SELinux가 활성화되어 있고 Nginx가 http 요청을 보낼 수 있는 권한을 활성화해야 함을 의미합니다. 다음 명령을 실행합니다.

sudo setsebool -P httpd_can_network_connect 1

" 테스트 실패" 오류를 수정하는 방법

nginx.conf 파일 에 대해 " 테스트 실패 " 오류 메시지가 표시되면 IP 주소 문제일 수 있습니다.

기본적으로 Nginx 서비스는 IPv4와 IPv6 모두에서 수신 대기합니다. 서버가 IPv6를 지원하지 않으면 테스트에 실패합니다. 이는 기본 구성 파일을 수정하여 수정할 수 있습니다.

기본 구성 파일 "/etc/nginx/nginx.conf"를 열고 다음 줄을 찾아 주석 처리한 다음 앞에 "#"을 추가합니다.

# listen [::]:80 default_server;

파일을 저장하고 닫은 후 다음 명령을 실행하여 Nginx 서비스를 다시 시작합니다.

sudo systemctl reload nginx

서비스를 재시작한 후 브라우저에서 서버 IP 주소에 접속하면 Nginx 페이지가 표시되어야 합니다.

Nginx 구성 파일 및 루트 디렉토리

Nginx 구성 파일의 위치와 기본 Nginx 서버 루트 디렉터리를 알아야 합니다.

추가 서버 블록

Apache에서 관리자는 가상 호스트를 사용하여 여러 웹 사이트를 실행합니다. Nginx를 사용하면 서버 블록을 사용하여 단일 서버에서 여러 웹 사이트를 실행할 수 있습니다.

확장자가 .conf인 새 구성 파일을 만들어 추가 서버 블록을 추가합니다. 이 파일을 "/etc/nginx/conf.d"에 넣으면 Nginx가 시작될 때마다 로드됩니다.

기본 Nginx 서버 루트 디렉터리

기본 Nginx 서버 루트 디렉토리는 "/usr/share/nginx"입니다. 이는 "/etc/nginx/conf.d/default.conf"에 있는 기본 서버 블록 구성 파일에 지정됩니다.

웹 파일을 포함하는 기본 서버 문서 루트 디렉토리는 "usr/share/nginx/html"입니다.

글로벌 구성

전역 구성은 "/etc/nginx/nginx.conf"에서 기본 Nginx 구성 파일을 수정하여 조정할 수 있습니다. 기본적으로 다음 세 가지를 인식할 수 있습니다.

    • 이벤트는 Nginx가 일반적으로 연결을 처리하는 방법을 정의하는 전역 설정입니다.

    • HTTP는 서버가 HTTP 및 HTTPS 연결을 처리하는 방법을 정의합니다.

    • 서버는 HTTP 컨텍스트에서 정의됩니다. 서버 포트, 문서 루트 등을 지정합니다.

Nginx 관리

nginx 중지

sudo systemctl stop nginx

Nginx 서비스를 다시 시작하십시오.

sudo systemctl restart nginx

nginx를 새로 고침

sudo systemctl reload nginx

서버 시작 시 Nginx 자동 시작 비활성화

sudo systemctl disable nginx

새 디렉토리 구성

여러 웹사이트를 호스팅하는 경우 표준 명명 규칙을 따르는 것이 가장 좋습니다. cPanel의 표준 이름 지정 및 디렉터리 생성을 사용합니다.

sudo mkdir -p /var/www/yourdomain.com/public_html

그런 다음 구성을 테스트하는 데 도움이 되는 인덱스 페이지를 만듭니다.

sudo nano /var/www/yourdomain.com/public_html/index.html

테스트를 위해 index.html에 텍스트 줄을 입력하고 파일을 저장한 후 닫습니다.

데이터에 온라인으로 액세스할 수 있도록 다음 명령을 실행하여 Linux 파일 권한을 변경하십시오.

sudo chmod 755 /var/www/yourdomain.com/public_html

그런 다음 index.html 페이지를 온라인으로 열 수 있습니다.

Last updated