웹사이트 검색

Ubuntu 18.04 LTS에서 Brotli 압축으로 Nginx를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 무엇을 할 것인가?\n
  3. 1단계 - 빌드 종속성 설치
  4. 2단계 - ngx_brotli로 Nginx 설치
    1. Nginx 저장소 추가
    2. Nginx 및 ngx_brotli 소스 파일 다운로드
    3. ngx_brotli 지원으로 Nginx 구축
    4. Nginx 설치 및 Brotli 지원 활성화\n

    Nginx(engine-x)는 오픈 소스 고성능 HTTP 서버, 리버스 프록시 및 IMAP/POP3 프록시 서버입니다. Nginx의 뛰어난 기능은 안정성, 풍부한 기능 세트, 간단한 구성 및 낮은 메모리 소비입니다.

    Brotli는 Google에서 만든 오픈 소스 압축 알고리즘입니다. Brotli는 gzip보다 우수하고 무손실 압축을 제공하며 현재 주요 브라우저 및 웹 서버에서 지원됩니다.

    Brotli 성능에 대한 추가 정보:

    • Akamai 블로그 게시물.
    • Brotli에 대한 Cloudflare 게시물.\n
    • Mozilla 블로그 게시물.

    이 튜토리얼에서는 Nginx 웹 서버에서 Brotli 압축 알고리즘 지원을 추가하는 방법을 단계별로 보여드리겠습니다. 우리는 brotli 압축 알고리즘을 지원하는 맞춤형 nginx 패키지를 구축할 것입니다. 최신 Ubuntu 버전을 사용하고 Debian 운영 체제용 nginx 패키지를 빌드할 것입니다.

    전제 조건

    • 우분투 18.04
    • 루트 권한\n

    우리는 무엇을 할 것입니까?

    1. 빌드 종속성 설치
    2. ngx_brotli로 Nginx 설치
      • Nginx 저장소 추가
      • Nginx 및 ngx_brotli 다운로드
      • ngx_brotli 지원으로 Nginx 구축
      • Nginx 설치 및 ngx_brotli 지원 활성화\n
    3. Nginx 가상 호스트 구성\n
    4. 테스트

    1단계 - 빌드 종속성 설치

    이 가이드에서 가장 먼저 해야 할 일은 빌드 종속성을 시스템에 설치하는 것입니다.

    Ubuntu 리포지토리를 업데이트한 다음 아래의 apt 명령을 사용하여 모든 패키지 빌드 종속성을 설치합니다.

    sudo apt update
    sudo apt install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

    모든 패키지가 설치될 때까지 기다리십시오.

    2단계 - ngx_brotli로 Nginx 설치

    이 단계에서는 Ubuntu 시스템에 brotli 압축 알고리즘을 지원하는 사용자 지정 nginx 패키지를 설치합니다. 그리고 공식 nginx 저장소에서 다운로드할 수 있는 최신 안정 버전의 nginx 패키지를 사용할 것입니다.

    Nginx 저장소 추가

    nginx 저장소를 추가하기 전에 아래 명령을 사용하여 nginx 키 사인을 추가하십시오.

    curl -L https://nginx.org/keys/nginx_signing.key | sudo apt-key add -

    이제 vim 편집기를 사용하여 /etc/apt/sources.list.d 디렉토리에 새 nginx 리포지토리 파일 nginx.list를 만듭니다.

    vim /etc/apt/sources.list.d/nginx.list

    아래에 구성을 붙여넣습니다.

    deb http://nginx.org/packages/ubuntu/ bionic nginx
    deb-src http://nginx.org/packages/ubuntu/ bionic nginx

    저장 및 종료.

    이제 우분투 리포지토리를 업데이트하십시오.

    sudo apt-get update

    Nginx 저장소가 추가되었습니다.

    Nginx 및 ngx_brotli 소스 파일 다운로드

    이제 apt 명령을 사용하여 nginx 저장소에서 Nginx 패키지를 다운로드합니다.

    /usr/local/src 디렉토리로 이동하고 아래의 apt 명령을 사용하여 Nginx 소스를 다운로드합니다.

    cd /usr/local/src
    sudo apt source nginx

    이제 nginx에 필요한 모든 패키지 종속성을 설치합니다.

    sudo apt build-dep nginx -y

    그리고 모든 설치가 완료되면 GitHub에서 ngx_brotli 소스 코드를 복제합니다.

    git clone --recursive https://github.com/google/ngx_brotli.git

    Nginx 및 ngx_brotli가 다운로드되었습니다.

    ngx_brotli 지원으로 Nginx 구축

    이제 기본 Nginx 빌드 규칙을 편집해야 하며 패키지의 빌드 규칙에 ngx_brotli를 추가해야 합니다.

    /usr/local/src/nginx-* 디렉토리로 이동하여 데비안 규칙 구성을 편집합니다.

    cd /usr/local/src/nginx-*/
    vim debian/rules

    이제 config.env.nginx 및 config.env.nginx_debug에 대한 두 가지 빌드 환경을 얻게 됩니다. ngx_brotli에 대한 --add-module= 옵션을 두 빌드 환경 모두에 추가합니다.

    --add-module=/usr/local/src/ngx_brotli

    저장 및 종료.

    그리고 ngx_brotli 지원으로 nginx 패키지를 컴파일하고 빌드할 준비가 되었습니다.

    아래의 dpkg 명령을 실행합니다.

    sudo dpkg-buildpackage -b -uc -us

    메모:

    • -b: 소스 파일 없이 바이너리만 빌드합니다.\n
    • -uc : 서명되지 않은 .buildinfo 및 .changes 파일.
    • -us: 서명되지 않은 소스 패키지.

    빌드가 완료되면 아래와 같이 /usr/local/src 디렉토리에 nginx-*.deb 패키지가 생성됩니다.

    ls -lah

    Nginx 설치 및 Brotli 지원 활성화

    ngx_brotli로 nginx 빌드가 완료되었습니다. 아래 dpkg 명령을 사용하여 nginx-*.deb 패키지를 설치합니다.

    cd /usr/local/src/
    sudo dpkg -i *.deb

    ngx_brotli를 지원하는 Nginx가 설치되었습니다.

    이제 /etc/nginx 구성 디렉토리로 이동하여 nginx.conf 구성 파일을 편집합니다.

    cd /etc/nginx/
    vim nginx.conf

    http {...} 섹션 내부에 아래 구성을 추가하여 nginx에서 ngx_brotli를 활성화합니다.

        brotli on;
        brotli_comp_level 6;
        brotli_static on;
        brotli_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/vnd.microsoft.icon image/bmp image/svg+xml;

    저장 및 종료.

    nginx 구성을 테스트하고 오류가 없는지 확인하십시오.

    nginx -t

    brotli 압축 지원이 활성화되었습니다.

    3단계 - Nginx 가상 호스트 구성

    이 단계에서는 도메인 이름 nginx.hakase-labs.io에 대한 새 가상 호스트를 생성하려고 합니다.

    메모:

    • Brotli 압축은 HTTPS 사이트만 지원하므로 도메인 이름에 대한 인증서 파일이 있는지 확인하거나 무료 Letsencrypt SSL 인증서를 생성할 수 있습니다.\n

    /etc/nginx 구성 디렉토리로 이동하여 새 가상 호스트 구성 brotli.conf를 만듭니다.

    cd /etc/nginx/
    vim conf.d/brotli.conf

    다음 nginx 가상 호스트 구성을 거기에 붙여넣습니다.

    # Redirect HTTP to HTTPS Nginx
    server { listen 80; server_name nginx.hakase-labs.io; return 301 https://$host$request_uri; } # SSL configuration server { listen 443 ssl http2; server_name nginx.hakase-labs.io;
    ssl_certificate /etc/letsencrypt/live/nginx.hakase-labs.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/nginx.hakase-labs.io/privkey.pem; # Improve HTTPS performance with session resumption ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; # Enable server-side protection against BEAST attacks ssl_prefer_server_ciphers on; ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5; # Disable SSLv3 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    # web root directory location / { root /usr/share/nginx/html; } }

    저장 및 종료.

    메모:

    • 자신의 도메인으로 도메인 이름을 변경합니다.\n
    • SSL 인증서 경로를 변경합니다.\n

    이제 nginx 구성을 테스트하고 오류가 없는지 확인한 다음 서비스를 다시 시작하십시오.

    nginx -t
    systemctl restart nginx

    새로운 nginx 가상 호스트가 추가되었습니다.

    4단계 - 테스트

    웹 브라우저를 열고 도메인 이름을 입력합니다. 제 이름은 다음과 같습니다.

    http://nginx.hakase-labs.io

    이제 https 연결로 리디렉션됩니다. 페이지를 마우스 오른쪽 버튼으로 클릭하고 요소 검사를 클릭합니다. 네트워크 탭을 클릭하고 페이지를 다시 로드합니다.

    요청 세부 정보를 클릭하면 아래와 같이 웹 서버에서 모든 요청 및 응답 헤더를 가져옵니다.

    응답 헤더 섹션에는 brotli 지원을 위한 content-encoding: br이 표시됩니다.

    이제 다른 테스트를 원하면 아래와 같이 curl 명령을 사용할 수 있습니다.

    curl -H 'Accept-Encoding: br' -I https://nginx.hakase-labs.io

    그러면 brotli 지원을 위한 결과 content-encoding: br 이 표시됩니다.

    Ubuntu 18.04에서 Brotli 압축 지원을 사용한 Nginx 설치가 성공적으로 완료되었습니다.

    참조

    • https://www.babak.io/blog/