소개
Nginx는 세계에서 가장 인기 있는 웹 서버 중 하나로, 인터넷 상에서 가장 크고 높은 트래픽을 처리하는 사이트 중 일부를 호스팅합니다. 이것은 가벼운 선택지로서 웹 서버 또는 역방향 프록시로 사용할 수 있습니다.
이 가이드에서는 Ubuntu 22.04 서버에 Nginx를 설치하는 방법, 방화벽을 조정하는 방법, Nginx 프로세스를 관리하는 방법, 그리고 단일 서버에서 여러 도메인을 호스팅하기 위한 서버 블록을 설정하는 방법에 대해 논의하겠습니다.
DigitalOcean 앱 플랫폼을 사용하여 GitHub에서 애플리케이션을 배포하십시오. DigitalOcean이 앱을 확장하는 데 집중하도록 해보세요.
필수 사항
이 가이드를 시작하기 전에 서버에 sudo 권한이 있는 일반 사용자 계정이 설정되어 있어야 합니다. Ubuntu 22.04용 초기 서버 설정 가이드를 따르면 일반 사용자 계정을 구성하는 방법을 알 수 있습니다.Ubuntu 22.04용 초기 서버 설정 가이드를 따르는 것입니다.
이 튜토리얼의 마지막 단계를 완료하기 전에 도메인 이름을 등록하는 것이 좋습니다. DigitalOcean에서 도메인 이름을 설정하는 방법에 대해 자세히 알아보려면 디지털오션 DNS 소개를 참조하십시오.
계정이 준비되었으면 비 루트 사용자로 로그인하여 시작하십시오.
단계 1 – Nginx 설치
Ubuntu의 기본 저장소에 Nginx가 제공되기 때문에 패키지 시스템인 apt
를 사용하여 이를 설치할 수 있습니다.
이 세션에서 처음으로 apt
패키지 시스템을 사용하는 것이므로 로컬 패키지 인덱스를 업데이트하여 가장 최신 패키지 목록에 액세스할 수 있습니다. 그런 다음 nginx
를 설치할 수 있습니다:
설치를 확인하라는 메시지가 나타나면 Y
를 누르십시오. 서비스를 다시 시작하라는 메시지가 표시되면 기본값을 수락하고 계속 진행하려면 ENTER
를 누르십시오. apt
는 Nginx 및 필요한 종속성을 서버에 설치합니다.
단계 2 – 방화벽 조정
Nginx를 테스트하기 전에 방화벽 소프트웨어를 구성하여 서비스에 액세스할 수 있도록해야합니다. Nginx는 설치 시 ufw
에 서비스로 등록되므로 Nginx 액세스를 허용하기가 간단합니다.
ufw
가 작동하는 방식을 알고있는 애플리케이션 구성을 나열하려면 다음을 입력하십시오:
다음과 같은 애플리케이션 프로필 목록을 받게됩니다:
OutputAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
출력에 따르면 Nginx에 대해 세 가지 프로필이 있습니다:
- Nginx Full: 이 프로필은 포트 80(일반, 암호화되지 않은 웹 트래픽)와 포트 443(TLS/SSL 암호화 트래픽)을 모두 엽니다.
- Nginx HTTP: 이 프로필은 포트 80(일반, 암호화되지 않은 웹 트래픽)만 엽니다.
- Nginx HTTPS: 이 프로필은 포트 443(TLS/SSL 암호화 트래픽)만 엽니다.
구성한 트래픽을 허용하는 가장 제한적인 프로필을 활성화하는 것이 좋습니다. 현재는 포트 80에서만 트래픽을 허용해야합니다.
다음을 입력하여 이를 활성화 할 수 있습니다:
변경 사항을 확인하려면 다음을 입력할 수 있습니다:
출력에는 허용된 HTTP 트래픽이 표시됩니다:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
단계 3 – 웹 서버 확인
설치 프로세스의 끝에서 Ubuntu 22.04에서 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 2022-03-01 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
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 주소를 모르는 경우 icanhazip.com 도구를 사용하여 인터넷의 다른 위치에서 받은 공용 IP 주소를 확인할 수 있습니다:
서버의 IP 주소를 얻었으면 브라우저의 주소 표시줄에 입력하십시오:
http://your_server_ip
기본 Nginx 랜딩 페이지를 수신해야합니다:
이 페이지에 액세스하면 서버가 올바르게 실행되고 관리할 준비가되었습니다.
단계 4 – Nginx 프로세스 관리
이제 웹 서버가 실행 중인 상태이므로 기본 관리 명령을 검토 해보겠습니다.
웹 서버를 중지하려면 다음을 입력하십시오:
웹 서버를 중지한 경우 다음을 입력하여 시작하십시오:
서비스를 중지하고 다시 시작하려면 다음을 입력하십시오:
구성 변경만 하는 경우 Nginx는 종종 연결을 끊지 않고 다시로드 될 수 있습니다. 이를 위해 다음을 입력하십시오:
기본적으로 Nginx는 서버 부팅 시 자동으로 시작하도록 구성됩니다. 원하지 않는 경우 이 동작을 비활성화하려면 다음을 입력하십시오:
부팅 시 서비스를 다시 활성화하려면 다음을 입력할 수 있습니다:
이제 기본적인 관리 명령을 배웠으므로 사이트를 여러 도메인을 호스팅할 수 있도록 구성할 준비가 되었습니다.
단계 5 – 서버 블록 설정 (권장됨)
Nginx 웹 서버를 사용할 때 서버 블록 (Apache의 가상 호스트와 유사)은 구성 세부 정보를 캡슐화하고 단일 서버에서 둘 이상의 도메인을 호스팅하는 데 사용할 수 있습니다. 우리는 your_domain이라는 도메인을 설정할 것이지만, 이를 본인의 도메인 이름으로 바꿔야 합니다.
Ubuntu 22.04의 Nginx는 기본적으로 하나의 서버 블록이 활성화되어 있으며 /var/www/html
디렉터리에서 문서를 제공하도록 구성됩니다. 이는 단일 사이트에는 잘 작동하지만 여러 사이트를 호스팅하는 경우 불편할 수 있습니다. /var/www/html
을 수정하는 대신, 클라이언트 요청이 다른 사이트와 일치하지 않는 경우에는 기본 디렉터리로서 /var/www/html
을 그대로 두고 /var/www
내에서 your_domain 사이트에 대한 디렉터리 구조를 생성해 보겠습니다.
부모 디렉터리가 필요한 경우 -p
플래그를 사용하여 your_domain 디렉터리를 다음과 같이 생성하십시오:
다음으로 디렉토리의 소유권을 $USER
환경 변수에 할당하십시오:
웹 루트의 권한은 기본 파일 권한을 설정하는 umask
값을 수정하지 않았다면 올바를 것입니다. 권한이 올바른지 확인하고 소유자에게 파일을 읽고 쓰기 및 실행할 수 있는 권한을 부여하고 그룹 및 다른 사용자에게는 읽기 및 실행 권한만 부여하려면 다음 명령을 입력하십시오:
다음으로 nano
또는 선호하는 편집기를 사용하여 샘플 index.html
페이지를 만듭니다:
내부에 다음과 같은 샘플 HTML을 추가하십시오:
파일을 저장하고 닫으려면 Ctrl+X
를 누르고 저장하라는 메시지가 표시되면 Y
를 입력한 다음 Enter
를 누릅니다.
Nginx가 이 콘텐츠를 제공하려면 올바른 지시문이 있는 서버 블록을 만들어야 합니다. 기본 구성 파일을 직접 수정하는 대신 새로운 파일을 /etc/nginx/sites-available/your_domain
에 만들어 보겠습니다:
다음 구성 블록을 붙여 넣으십시오. 이는 기본 설정과 유사하지만 새 디렉토리 및 도메인 이름에 대해 업데이트되었습니다:
root
구성이 새 디렉토리로 업데이트되었고 server_name
이 도메인 이름으로 업데이트된 것을 주목하십시오.
다음으로 파일을 활성화하여 Nginx가 시작 중에 읽는 sites-enabled
디렉토리에 해당 파일로부터 링크를 생성하겠습니다:
참고: Nginx는 서버 블록이 활성화되었는지 추적하기 위해 심볼릭 링크 또는 심링크라는 일반적인 방법을 사용합니다. 심링크를 만들면 디스크에 바로 가기를 만드는 것처럼 되어 나중에 해당 바로 가기를 sites-enabled
디렉터리에서 삭제할 수 있지만 sites-available
에 있는 서버 블록은 유지할 수 있습니다. 원한다면 그것을 활성화할 수 있습니다.
현재 두 개의 서버 블록이 활성화되어 있으며 그들의 listen
및 server_name
지시문에 기반하여 요청에 응답하도록 구성되어 있습니다(이러한 지시문이 Nginx에서 어떻게 처리되는지에 대한 자세한 내용은 여기에서 읽을 수 있습니다.):
your_domain
:your_domain
및www.your_domain
에 대한 요청에 응답합니다.default
: 다른 두 블록과 일치하지 않는 경우 포트 80의 모든 요청에 응답합니다.
추가 서버 이름을 추가함으로써 발생할 수 있는 해시 버킷 메모리 문제를 피하려면 /etc/nginx/nginx.conf
파일에서 단일 값을 조정해야 합니다. 파일을 엽니다:
server_names_hash_bucket_size
지시문을 찾고 #
기호를 제거하여 해당 줄을 주석 해제합니다. 만약 nano를 사용하고 있다면 파일에서 단어를 빠르게 검색하려면 CTRL
키와 w
키를 누릅니다.
참고: 코드 라인을 주석 처리하는 것 – 일반적으로 라인 시작 부분에 #
을 넣는 것 -은 실제로 삭제하지 않고도 비활성화하는 다른 방법입니다. 많은 구성 파일은 활성 코드와 문서 간을 토글하여 활성화 또는 비활성화할 수 있도록 여러 옵션을 주석 처리하여 제공됩니다.
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
작업이 완료되면 파일을 저장하고 닫으십시오.
다음으로 Nginx 파일 중 구문 오류가 없는지 테스트하십시오:
문제가 없으면 변경 사항을 활성화하려면 Nginx를 다시 시작하십시오:
Nginx는 이제 도메인 이름을 제공해야합니다. 이를 확인하려면 http://your_domain
으로 이동하여 다음과 같은 내용을 확인해야합니다:
단계 6 – 중요한 Nginx 파일 및 디렉토리에 익숙해지기
이제 Nginx 서비스 자체를 관리하는 방법을 알았으므로 몇 분 동안 중요한 디렉토리 및 파일을 익히는 것이 좋습니다.
내용
/var/www/html
: 실제 웹 콘텐츠는 기본적으로 이 디렉터리에 있는 기본 Nginx 페이지로 제공됩니다. 이는 Nginx 구성 파일을 수정하여 변경할 수 있습니다.
서버 구성
/etc/nginx
: Nginx 구성 디렉터리입니다. 모든 Nginx 구성 파일이 여기에 있습니다./etc/nginx/nginx.conf
: 주요 Nginx 구성 파일입니다. 이 파일을 수정하여 Nginx 전역 구성을 변경할 수 있습니다./etc/nginx/sites-available/
: 사이트별 서버 블록을 저장할 수 있는 디렉터리입니다. 이 디렉터리에서 발견된 구성 파일은sites-enabled
디렉터리에 링크되지 않는 한 Nginx가 사용하지 않습니다. 일반적으로 모든 서버 블록 구성은 이 디렉터리에서 수행되며, 다른 디렉터리에 링크하여 활성화됩니다./etc/nginx/sites-enabled/
: 활성화된 사이트별 서버 블록이 저장되는 디렉터리입니다. 일반적으로 이 디렉터리에 구성 파일에 대한 링크를 만들어서 생성됩니다./etc/nginx/snippets
: 이 디렉터리에는 Nginx 구성의 다른 위치에서 포함할 수 있는 구성 조각이 포함되어 있습니다. 반복 가능한 구성 세그먼트는 재구성하여 스니펫으로 만드는 것이 좋습니다.
서버 로그
/var/log/nginx/access.log
: Nginx가 다르게 구성되어 있지 않은 한 웹 서버로의 모든 요청이 이 로그 파일에 기록됩니다./var/log/nginx/error.log
: Nginx 오류는 이 로그에 기록됩니다.
결론
웹 서버를 설치했으므로 풍부한 경험을 위해 제공할 콘텐츠 유형 및 사용할 기술에 대한 많은 옵션이 있습니다.
더 완전한 애플리케이션 스택을 구축하려면 우분투 22.04에 Linux, Nginx, MySQL, PHP (LEMP 스택) 설치 방법 문서를 확인하세요.
Let’s Encrypt를 사용하여 도메인 이름에 무료 SSL 인증서를 설정하려면 우분투 22.04에서 Let’s Encrypt로 Nginx 보안 설정하는 방법을 참고하세요.
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-22-04