Ubuntu 16.04의 Nginx에서 HTTP / 2 활성화

HTTP / 2 는 1999 년에 표준화 된 현재 사용되지 않는 HTTP / 1.1 프로토콜의 새로운 버전입니다. 그 이후로 웹에서 많은 변화가있었습니다. 우리의 응용 프로그램은 이전보다 더 복잡하므로 기본 전송 프로토콜의 변경이 필요했습니다. HTTP / 2 의 가장 중요한 점은최종 사용자가 웹 페이지를 더 빠르게 만들 수 있다는 것입니다.

간단히 HTTP / 25 가지 주요 기능을 추가 합니다.

  • 지속적인 단일 연결
  • 멀티플렉싱
  • 헤더 압축
  • 자원 우선 순위
  • 전송 계층 보안 (브라우저에만 유효)

이 모든 기능을 설명하는 것은이 튜토리얼에서 다루지 않지만이 주제에 대해 더 깊이 파고 들고 싶다면 고성능 브라우저 네트워킹 서적 -HTTP / 2 발췌 부분에서 발췌 할 것을 권장 합니다.

이 안내서에서는 Ubuntu 16.04 (Xenial)에 최신 안정 버전의 Nginx를 설치하고 자체 서명 된 SSL 인증서를 생성 하며 Nginx에서 HTTP / 2 프로토콜을 활성화 하고 텍스트 기반 브라우저 elinks를 설치 하여 HTTP 클라이언트로 작동합니다.

Nginx 설치

최신 안정 버전의 Nginx를 설치하려면 꽤 많은 명령을 실행해야합니다.

  1. 패키지 및 리포지토리에 서명하는 데 사용되는 Nginx 공개 PGP 키를 다운로드하여 패키지 관리자가 사용하는 키 링에 추가하여 리포지토리에서 다운로드 한 패키지의 진위 여부를 확인해야합니다.

    wget https://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key
    
  2. 파일 시스템에서 PGP 키를 삭제하십시오.

    rm nginx_signing.key
    
  3. 새로운 저장소 추가

    printf "deb http://nginx.org/packages/ubuntu/ xenial nginx \ndeb-src http://nginx.org/packages/ubuntu/ xenial nginx \n" >> /etc/apt/sources.list.d/nginx.list
    
  4. 패키지 목록을 업데이트하고 Nginx를 설치하십시오 :

    apt update && apt install nginx -y
    
  5. Nginx 버전을 확인하기 위해 다음을 사용할 수 있습니다.

    nginx -v 
    # nginx version: nginx/1.10.1
    

    모든 것이 잘 진행 1.10.x되면 nginx -v명령을 실행할 때 출력 과 같은 패턴을 볼 수 있습니다 .

자체 서명 된 인증서 및 HTTP / 2

하지만 HTTP / 2 구현하기 위해 브라우저를 강요하지 않는 사양 HTTP / 2 TLS를 통해, 모든 주요 브라우저에만 구현하기로 결정 HTTP / 2 TLS 이상을,하지만 어떤 TLS 버전 만 TLS 1.2 이상이 필요합니다.

가상의 example.com도메인에 대해 자체 서명 된 인증서를 만들려고합니다. 프로덕션을 위해서는 유효한 도메인이 필요하고 신뢰할 수있는 CA를 사용해야합니다.

  1. 개인 키 생성 :

    openssl genrsa -aes128 -out example.com.key 2048
    

    이 명령을 실행 한 후 암호를 2 번 입력해야합니다. 암호문은 성가 시므로 제거하겠습니다.

  2. 개인 키에서 암호를 제거하십시오.

    openssl rsa -in example.com.key -out example.com.key
    
  3. CSR (인증서 서명 요청) 생성 :

    openssl req -new -sha256 -key example.com.key -out cert-request.csr 
    

    단일 도메인 인증서를 만들고 있으므로 공통 이름 필드를 example.com도메인 과 동일하게 설정해야 합니다

  4. 인증서를 작성하십시오.

    openssl x509 -req -days 365 -in cert-request.csr -signkey example.com.key -out example.com.crt
    
  5. 인증서 및 개인 키를 정렬하십시오.

    mkdir -p /etc/ssl/testing/private && mkdir /etc/ssl/testing/certs
    mv example.com.key /etc/ssl/testing/private && mv example.com.crt /etc/ssl/testing/certs
    
  6. nginx 가상 호스트 디렉토리 만들기

    mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled
    
  7. 그런 다음 nano /etc/nginx/nginx.conf지시문을 실행 하고 찾으십시오 include /etc/nginx/conf.d/*.conf;. 이 지시문 아래에 include /etc/nginx/sites-enabled/*;저장 ( CTRL + O )을 추가 한 후 ( CTRL + X ) 종료하십시오 .

    ##
    # Virtual Hosts
    ##
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    
  8. 이 명령으로 디렉토리 example.com.conf내부 에 파일을 작성 하고 다음 코드를 복사 / 붙여 넣기하십시오./etc/nginx/sites-availablenano /etc/nginx/sites-available/example.com.conf

    server {
        listen 80;
        listen [::]:80;
        server_name example.com;
        return 301 https://$host$request_uri;
    }
    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name example.com;
        root /var/www/html;
        index index.nginx-debian.html;
    
        ssl_certificate /etc/ssl/testing/certs/example.com.crt;
        ssl_certificate_key /etc/ssl/testing/private/example.com.key;
    
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
        ssl_prefer_server_ciphers on;
    }
    

    축하합니다. 이제 HTTP / 2를 사용할 수있는 웹 서버가 있습니다. HTTPS 가상 호스트 내의 지시문에 http2매개 변수를 추가 listen하면 HTTP / 2 지원이 제공됩니다.

  9. /etc/nginx/sites-available/example.com.conf이 명령 으로 기호 링크를 작성하십시오 .

    ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled
    
  10. 테스트 구성 구문

    nginx -t
    
  11. Nginx를 다시 시작하여 변경 사항을 적용하십시오.

    systemctl restart nginx
    
  12. 파일에 example.com도메인 추가/etc/hosts

    echo '127.0.0.1    example.com' >> /etc/hosts
    

가상 호스트를 테스트하려면 텍스트 기반 브라우저-elink가 필요합니다.

  1. elink를 설치하려면 다음 명령을 사용하십시오.

    apt install elinks
    
  2. example.com가상 호스트 실행 을 테스트하려면 다음을 수행하십시오 .

    elinks https://example.com
    
  3. elinks 브라우저를 종료하려면 키보드에서 q 를 누른 다음 Enter누르십시오 .

HTTP / 2 테스트

어떤 프로토콜 서버가 광고하는 가장 쉬운 방법을 보려면 openssl툴킷 을 사용하는 것 입니다.

    openssl s_client -connect example.com:443 -nextprotoneg ''

이 명령의 출력에는 다음과 같은 내용이 표시됩니다.

    CONNECTED(00000003)
    Protocols advertised by server: h2, http/1.1      

작동중인 HTTP / 2 를 보려면 브라우저 개발자 도구를 사용할 수 있습니다. HTTP / 2 프로토콜은 h2또는 HTTP/2.0식별자로 표시됩니다 . dev-tools에서 네트워크 패널을 열고 페이지를 새로 고칩니다.

결론

이제 Nginx 설정에서 HTTP / 2 를 활성화하는 것이 얼마나 쉬운 지 알고 있어야 합니다. 그러나 이것이 전체적인 그림의 일부는 아닙니다. 먼저 강력한 암호 제품군을 사용하는 서버에서 TLS / SSL을 활성화하고 블랙리스트에있는 암호를 사용하지 않는지 고려해야합니다 . 서버에서 강력한 TLS / SSL을 활성화 한 후에 만 HTTP / 2 활성화에 대해 생각할 수 있습니다 .



Leave a Comment

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true

기술적 특이점: 인류 문명의 먼 미래?

기술적 특이점: 인류 문명의 먼 미래?

과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

2021년 의료 분야에서 인공 지능의 영향

2021년 의료 분야에서 인공 지능의 영향

의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.