HyunJongSu (토론 | 기여) 편집 요약 없음 |
HyunJongSu (토론 | 기여) 편집 요약 없음 |
||
(같은 사용자의 중간 판 3개는 보이지 않습니다) | |||
34번째 줄: | 34번째 줄: | ||
구조적으로는 아파치에서 사용하는 스레드/프로세스 기반 구조 대신 비동기 이벤트 기반 구조를 가진다. 이로 인해서 서버 부하시 성능 예측이 쉽다고... 이걸 사용하는 리눅스 웹서버의 경우 LAMP(Linux + Apache + MySQL / MariaDB + PHP or Python or Perl)대신 LEMP를 쓴다. 여러 서드파티 기능들(SSL, GeoIP등)을 모듈로 덧 붙이는 방식을 쓰고 있다. 그래서 모듈을 안 쓸 경우 제외해놓는데 단, 소스 컴파일시 모듈을 추가 안 하면 그 이후에 추가가 안 된다. | 구조적으로는 아파치에서 사용하는 스레드/프로세스 기반 구조 대신 비동기 이벤트 기반 구조를 가진다. 이로 인해서 서버 부하시 성능 예측이 쉽다고... 이걸 사용하는 리눅스 웹서버의 경우 LAMP(Linux + Apache + MySQL / MariaDB + PHP or Python or Perl)대신 LEMP를 쓴다. 여러 서드파티 기능들(SSL, GeoIP등)을 모듈로 덧 붙이는 방식을 쓰고 있다. 그래서 모듈을 안 쓸 경우 제외해놓는데 단, 소스 컴파일시 모듈을 추가 안 하면 그 이후에 추가가 안 된다. | ||
어느 | 어느 기관의 [[2012년]] 웹서버 조사에서, 웹서버 프로그램 중 조사한 사이트중 3위를 차지하였으며, 활동적인 웹 서버중 2위를 차지했다. 현재 [[네이버]]의 프론트엔드의 웹서버 엔진이 Nginx이다. (백엔드는 Apache HTTPd를 사용하는 것으로 보임) 그 밖에는 Netflix, WordPress.com, GitHub, SoundCloud, Zynga등이 Nginx를 돌린다고 한다. [[클라우드플레어]][의 웹서버도 Nginx의 [[포크 (소프트웨어 개발)|포크]]를 사용하고 있다. | ||
현재 Nginx의 안정버전은 1.23.4이다. | 현재 Nginx의 안정버전은 1.23.4이다. | ||
44번째 줄: | 44번째 줄: | ||
==== 유의사항 ==== | ==== 유의사항 ==== | ||
nginx-quic용 사전 빌드 패키지는 현재 다음 운영체제 및 아키텍처에서 사용할 수 있다. | nginx-quic용 사전 빌드 패키지는 현재 다음 운영체제 및 아키텍처에서 사용할 수 있다. | ||
- [[RHEL]] 9 및 파생 제품: [[AMD64]], [[ARM]]64 | |||
- [[우분투 22.04]]: amd64, arm64 | |||
* nginx-quic 패키지는 quictls와 동적으로 연결된다. | |||
* 시스템 전체 openssl 패키지와 함께 런타임 종속성으로 설치된다. | |||
* quictls는 운영 체제에서 제공하는 openssl 패키지와 다르다. 그리고 시스템 전체의 암호화 정책을 따르지 않으며, 배포판별 패치가 적용되지 않는다. | |||
/etc/pki/quictls(RHEL9) 또는 /etc/quictls(Ubuntu 22.04)의 구성을 사용한다. | /etc/pki/quictls(RHEL9) 또는 /etc/quictls(Ubuntu 22.04)의 구성을 사용한다. | ||
nginx-quic 패키지는 nginx 또는 nginx-plus 패키지와 함께 설치할 수 없다. | nginx-quic 패키지는 nginx 또는 nginx-plus 패키지와 함께 설치할 수 없다. | ||
80번째 줄: | 79번째 줄: | ||
* $ sudo apt update | * $ sudo apt update | ||
* $ sudo apt install nginx-quic | * $ sudo apt install nginx-quic | ||
==== conf 설정문서에 적용 ==== | |||
위의 절차를 완료했다면 /etc/nginx/conf.d 디렉토리에 있는 conf 설정 파일에 추가 설정을 적용한다. | |||
* listen 443 http3 reuseport; | |||
NGINX에 HTTP/1.1 및 HTTP/2와 동일한 포트(여기서는 443)에서 HTTP/3 연결을 수신 대기하도록 지시하는 매개변수와 함께 listen에 http3 지시문을 추가한다. | |||
이 reuseport매개변수는 NGINX 작업자 프로세스가 여러 개인 경우 올바른 작동을 위해 필요하다. 단 멀티 도메인을 사용하고 있다면 한 conf 파일에만 적용하고 다른 conf 파일들은 reuseport를 빼야한다. | |||
* listen 443 http3; | |||
또한, TLS 1.3 지원을 위해 아래 명령어를 추가한다. | |||
* ssl_protocols TLSv1.3; | |||
마지막으로, 다음과 같은 지시문을 추가한다. | |||
* add_header Alt-Svc 'h3=":$server_port"; ma=86400'; | |||
아래 예시를 참조하고 적용하면 된다. | |||
* server { | |||
* # for better compatibility we recommend | |||
* # using the same port number for QUIC and TCP | |||
* listen 443 http3 reuseport; # QUIC | |||
* listen 443 ssl; # TCP | |||
* | |||
* ssl_certificate certs/example.com.crt; | |||
* ssl_certificate_key certs/example.com.key; | |||
* ssl_protocols TLSv1.3; | |||
* | |||
* location / { | |||
* # advertise that QUIC is available on the configured port | |||
* add_header Alt-Svc 'h3=":$server_port"; ma=86400'; | |||
* | |||
* #proxy_pass <upstream_group>; | |||
* #root /<root_directory>; | |||
* } | |||
* } | |||
저장한 후 vim을 빠져나와 아래의 명령어를 실행해서 nginx를 재시작한다. | |||
* sudo systemctl restart nginx | |||
에러와 함께 실패 메세지가 되지 않았다면 성공한것이다. | |||
{{각주}} | {{각주}} | ||
[[분류:자유 소프트웨어]] | [[분류:자유 소프트웨어]] | ||
{{퍼온문서|Nginx||일부|리브레 위키|https://librewiki.net/wiki/Nginx}} | {{퍼온문서|Nginx||일부|리브레 위키|https://librewiki.net/wiki/Nginx}} |
2023년 5월 7일 (일) 22:55 기준 최신판
NGINX | |
---|---|
소프트웨어 정보 | |
원작자 | 이고르 시쇼브 |
출시 | 2004년 10월 4일 |
언어 | C |
웹사이트 | http://www.nginx.org/ |
상세[편집 | 원본 편집]
2002년부터 러시아의 프로그래머 이고르 시쇼브(Игорь Сысоев)가 아파치 코딩하다 아파치의 C10K 문제[1]를 보고 이를 극복하면서 네이티브 Win32환경에도 돌아갈 무설치 웹 서버 프로그램에 대한 개발을 시작하여 2004년 스푸트니크 1호 발사일에 발표한 오픈소스 서버 프로그램. 현재 이고르 시쇼브와 그가 설립한 회사인 Nginx Inc.가 이 프로젝트를 운영중에 있다. 목표는 가벼우면서도 강력한 프로그램이라고... HTTP와 리버스 프록시, IMAP/POP3등의 서버를 구동가능하다.
이를 지칭할 땐 엔진 X라고 부른다. (ENginex) 이는 러시아도 마찬가지.
구조적으로는 아파치에서 사용하는 스레드/프로세스 기반 구조 대신 비동기 이벤트 기반 구조를 가진다. 이로 인해서 서버 부하시 성능 예측이 쉽다고... 이걸 사용하는 리눅스 웹서버의 경우 LAMP(Linux + Apache + MySQL / MariaDB + PHP or Python or Perl)대신 LEMP를 쓴다. 여러 서드파티 기능들(SSL, GeoIP등)을 모듈로 덧 붙이는 방식을 쓰고 있다. 그래서 모듈을 안 쓸 경우 제외해놓는데 단, 소스 컴파일시 모듈을 추가 안 하면 그 이후에 추가가 안 된다.
어느 기관의 2012년 웹서버 조사에서, 웹서버 프로그램 중 조사한 사이트중 3위를 차지하였으며, 활동적인 웹 서버중 2위를 차지했다. 현재 네이버의 프론트엔드의 웹서버 엔진이 Nginx이다. (백엔드는 Apache HTTPd를 사용하는 것으로 보임) 그 밖에는 Netflix, WordPress.com, GitHub, SoundCloud, Zynga등이 Nginx를 돌린다고 한다. 클라우드플레어[의 웹서버도 Nginx의 포크를 사용하고 있다.
현재 Nginx의 안정버전은 1.23.4이다.
QUIC+HTTP/3 적용 방법[편집 | 원본 편집]
원 출처[편집 | 원본 편집]
이제 프리뷰 NGINX QUIC+HTTP/3 구현에 사용할 수 있는 바이너리 패키지(영문) [1]
NGINX-QUIC 적용 방법[편집 | 원본 편집]
유의사항[편집 | 원본 편집]
nginx-quic용 사전 빌드 패키지는 현재 다음 운영체제 및 아키텍처에서 사용할 수 있다.
- RHEL 9 및 파생 제품: AMD64, ARM64 - 우분투 22.04: amd64, arm64
- nginx-quic 패키지는 quictls와 동적으로 연결된다.
- 시스템 전체 openssl 패키지와 함께 런타임 종속성으로 설치된다.
- quictls는 운영 체제에서 제공하는 openssl 패키지와 다르다. 그리고 시스템 전체의 암호화 정책을 따르지 않으며, 배포판별 패치가 적용되지 않는다.
/etc/pki/quictls(RHEL9) 또는 /etc/quictls(Ubuntu 22.04)의 구성을 사용한다. nginx-quic 패키지는 nginx 또는 nginx-plus 패키지와 함께 설치할 수 없다. nginx-quic를 설치하기 전에 구성 파일을 백업하라.
* $ sudo cp -a /etc/nginx /etc/nginx-quic-backup
RHEL 9[편집 | 원본 편집]
- 1. 우선 다음 명령어를 사용하여 필수 구성 툴을 설치하라.
* $ sudo dnf install yum-utils
- 2. 그 다음 yum 리포지토리를 설정하려면 다음 코드를 사용하여 /etc/yum.repos.d/nginx-quic.repo라는 파일을 만든다.
* [nginx-quic] * name=nginx-quic repo * baseurl=https://packages.nginx.org/nginx-quic/rhel/9/$basearch/ * gpgcheck=1 * enabled=1 * gpgkey=https://nginx.org/keys/nginx_signing.key
- 3. nginx-quic를 설치하려면 다음 명령을 실행한다:
* $ sudo dnf install nginx-quic
- 4. GPG 키를 수락하라는 메시지가 표시되면 지문이 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62"와 일치하는지 확인한다. 일치하면 성공한 것이다.
우분투 22.04[편집 | 원본 편집]
- 1. 우선 다음 명령어를 사용하여 필수 구성 툴을 설치하라
* $ sudo apt update && sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
- 2. apt가 패키지 진위여부를 확인할 수 있도록 공식 nginx 서명 키를 가져온다.
* $ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ * | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
- 3. nginx-quic 패키지에 대한 apt 리포지토리를 설정 하려면 다음과 같은 명령어를 실행한다.
* $ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ * https://packages.nginx.org/nginx-quic/ubuntu `lsb_release -cs` nginx-quic" \ * | sudo tee /etc/apt/sources.list.d/nginx-quic.list
- 4. nginx-quic를 설치하려면 다음 명령을 실행한다:
* $ sudo apt update * $ sudo apt install nginx-quic
conf 설정문서에 적용[편집 | 원본 편집]
위의 절차를 완료했다면 /etc/nginx/conf.d 디렉토리에 있는 conf 설정 파일에 추가 설정을 적용한다.
* listen 443 http3 reuseport;
NGINX에 HTTP/1.1 및 HTTP/2와 동일한 포트(여기서는 443)에서 HTTP/3 연결을 수신 대기하도록 지시하는 매개변수와 함께 listen에 http3 지시문을 추가한다. 이 reuseport매개변수는 NGINX 작업자 프로세스가 여러 개인 경우 올바른 작동을 위해 필요하다. 단 멀티 도메인을 사용하고 있다면 한 conf 파일에만 적용하고 다른 conf 파일들은 reuseport를 빼야한다.
* listen 443 http3;
또한, TLS 1.3 지원을 위해 아래 명령어를 추가한다.
* ssl_protocols TLSv1.3;
마지막으로, 다음과 같은 지시문을 추가한다.
* add_header Alt-Svc 'h3=":$server_port"; ma=86400';
아래 예시를 참조하고 적용하면 된다.
* server { * # for better compatibility we recommend * # using the same port number for QUIC and TCP * listen 443 http3 reuseport; # QUIC * listen 443 ssl; # TCP * * ssl_certificate certs/example.com.crt; * ssl_certificate_key certs/example.com.key; * ssl_protocols TLSv1.3; * * location / { * # advertise that QUIC is available on the configured port * add_header Alt-Svc 'h3=":$server_port"; ma=86400'; * * #proxy_pass <upstream_group>; * #root /<root_directory>; * } * }
저장한 후 vim을 빠져나와 아래의 명령어를 실행해서 nginx를 재시작한다.
* sudo systemctl restart nginx
에러와 함께 실패 메세지가 되지 않았다면 성공한것이다.
각주
- ↑ 10K만큼의 소켓을 열게 된다면 하드웨어가 충분한데도 불구하고 I/O 처리방식의 문제때문에 프로세스가 제대로 처리하지 못한다는 문제