nginx HTTP 2 지원 사용 하기

7056 단어
 
  

nginx启用HTTP2特性

查看当前nginx的编译选项

#./nginx -V

nginx version: nginx/1.9.15
built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
built with OpenSSL 1.0.2g  1 Mar 2016
TLS SNI support enabled
configure arguments: --prefix=/home/jackie/software/nginx --with-openssl=/home/jackie/Downloads/nginx/openssl-1.0.2g --with-pcre=/home/jackie/Downloads/nginx/pcre-8.38 --with-zlib=/home/jackie/Downloads/nginx/zlib-1.2.8 --with-http_ssl_module --with-threads --with-debug

http2 지원 사용 하기
  • 컴 파일 옵션 을 수정 하여 configure 옵션 에 추가 --with-http_v2_module 하고, HTTP 2 는 SSL 지원 이 필요 하기 때문에 --with-http_ssl_module 옵션 이 부족 하면 추가 --with-http_ssl_module 해 야 합 니 다.다음 과 같다.
    ./configure --prefix=/home/jackie/software/nginx \
                --with-openssl=/home/jackie/Downloads/nginx/openssl-1.0.2g \
                --with-pcre=/home/jackie/Downloads/nginx/pcre-8.38 \
                --with-zlib=/home/jackie/Downloads/nginx/zlib-1.2.8 \
                --with-http_ssl_module \
                --with-threads \
                --with-debug \
                --with-http_v2_module
    
  • 컴 파일 & 업그레이드
    make & make install
    
  • 설정 파일 을 수정 하고 HTTP 2 를 사용 합 니 다. 다음 과 같 습 니 다.
    server {
        listen       8443 ssl http2 default_server; #    http2 default_server
        server_name  192.168.0.107;
        ...
    }
    
  • 프로필 검증
    #./nginx -t
    nginx: the configuration file /home/jackie/software/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /home/jackie/software/nginx/conf/nginx.conf test is successful
    
  • nginx 시작
    #./nginx
    
  • HTTP 2 가 활성화 되 었 는 지 확인
    방법 은 56.0.2924.87 과 같은 높 은 버 전의 크롬 을 사용 하면 다음 과 같은 절차 에 따라 조작 된다.
  • Chrome 을 사용 하여 http2 를 사용 하 는 사이트 에 접근 합 니 다. 예 를 들 어 Jackie 의 환경 은?https://192.168.0.107:8443。
  • TAB 페이지 를 새로 열 고 주소 표시 줄 에 chrome://net-internals/#http2 입력 하고 HTTP/2 sessions 아래 표를 검사 합 니 다.
  • 표 에 이전 방문 한 호스트 주소 가 있 는 지 확인 합 니 다. 예 를 들 어 192.168.0.107: 8443.

  • 방법 2. curl 명령 을 사용 합 니 다. HTTP / 2 with curl 을 참고 하여 다음 명령 을 실행 하고 사이트 에서 돌아 오 는 프로 토 콜 이 HTTP 인지 확인 합 니 다.
    curl --http2 -I 192.168.0.107:8443
    
    상기 명령 을 수행 할 때 다음 과 같은 오류 가 발생 하면 시스템 에 현재 설 치 된 curl 이 HTTP 2 프로 토 콜 을 지원 하지 않 는 다 는 것 을 의미한다.
    curl https://192.168.0.107:8443/ --http2
    curl: (1) Unsupported protocol
    
    다음 명령 을 실행 할 수 있 습 니 다. 시스템 에 현재 설 치 된 curl 이 지원 하 는 특성 목록 을 확인 하고 HTTP 2 가 포함 되 어 있 는 지 확인 할 수 있 습 니 다.
    curl -V
    curl 7.47.0 (i686-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
    Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
    Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
    
    상기 출력 정 보 를 통 해 알 수 있 듯 이 현재 설 치 된 curl 은 HTTP 2 를 지원 하지 않 습 니 다.이 때 curl 명령 HTTP 2 를 사용 하여 curl 을 재 컴 파일 하고 HTTP 2 지원 을 추가 하 는 방법 을 참고 할 수 있 습 니 다.
    방법 3 크롬 플러그 인 HTTP / 2 and SPDY indicator 를 설치 하고 설치 가 끝 난 후 HTTP 2 를 사용 하 는 사이트 에 접근 합 니 다. 주소 표시 줄 에 파란색 번개 가 치면 사이트 에서 HTTP 2 를 사용 하고 있 음 을 설명 합 니 다.그러나 재 키 는 벽 안에 있어 설치 가 항상 실패 하기 때문에 이 방법의 유효성 을 검증 하지 못 했다.
    완전한 프로필 은 다음 과 같 습 니 다. 완전한 프로필 입 니 다. HTTP 2 특성 과 관련 이 없 는 내용 을 삭 제 했 습 니 다.
    worker_processes  1;
    error_log  logs/error.log  debug;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        server_tokens off;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  logs/access.log  main;
    
        sendfile        on;
        tcp_nopush     on;
    
        keepalive_timeout  65;
        charset utf-8;
    
        server {
            listen 8080;
            server_name  192.168.0.107;
            if ($scheme ~ http) {
                return https://$server_name:8443$request_uri;
            }
        }
    
        server {
            listen       8443 ssl http2 default_server;
            server_name  192.168.0.107;
    
            ssl_certificate      /home/jackie/software/nginx_conf/server.crt;
            ssl_certificate_key  /home/jackie/software/nginx_conf/server.key;
    
            ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
    
            ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA';
            ssl_prefer_server_ciphers  on;
    
            add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload" always;
            add_header X-Frame-Options SAMEORIGIN always;
            add_header X-XSS-Protection "1; mode=block" always;
            add_header X-Content-Type-Options nosniff;
    
            location ~ / {
                index  index.jsp;
                proxy_pass http://127.0.0.1:18080;
                proxy_set_header        referer           '';
                include proxy.conf;
            }
    
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            location ~ /\. {
                deny all;
                access_log off;
                log_not_found off;
            }
        }
    
    }
    

    참고 자료
    nginx 에서 http2 자 료 를 사용 합 니 다.
  • Module ngx_http_v2_module
  • nginx 의 http 2.0 성능 이 너무 역 동적 이 고 HTTPS 사이트 성능 최적화
  • Nginx 를 1.9.12 로 업그레이드 하고 HTTP / 2
  • 오픈
  • HAProxy, Nginx 설정 HTTP / 2 전체 안내서
  • Nginx HTTP 2 컴 파일
  • 전단 엔지니어 학습 Nginx 입문 편
  • 전단 엔지니어 학습 Nginx 실천 설정 HTTP 2.0 편
  • Nginx 설정 http2 가 유효 하지 않 음 을 해결 하고 구 글 브 라 우 저 는 http 1.1 프로 토 콜 문제
  • 를 사용 합 니 다.
  • Nginx 에서 HTTP 2 를 설정 하 는 가장 실제 적 인 튜 토리 얼 일 수도 있 습 니 다
  • HTTP 2 관련 자료
  • HTTP, HTTP 2.0, SPDY, HTTPS 네가 알 아야 할 것들
  • 전단 성능 최적화 의 또 다른 방식 인 HTTP 2.0
  • HTTP 2.0 상세 설명
  • HTTP 2.0 프로 토 콜
  • 전단 엔 지 니 어 는 HTTP 에 대해 어느 정도 알 아야 합 니까?어떤 경로 로 익숙해 지 는 것 이 더 좋 습 니까?
  • 전단 에서 알 아야 할 HTTP 2
  • HTTP 2.0 의 일 들
  • Why Domain Sharding is Bad News for Mobile Performance and Users
  • http2 explained
  • http2 explained

  • 기타
  • DNS 작업 절차 와 원 리 는 도 메 인 이름, IP 와 DNS 의 관계
  • DNS 작업 절차 및 원리 도 메 인 이름, IP 와 DNS 의 관계
  • 브 라 우 저 로 html 를 불 러 오고 렌 더 링 하 는 순서
  • JAVASCRIPT 적재 및 집행
  • URL 입력 부터 페이지 로 딩 완료 까지 무슨 일이 있 었 습 니까?
  • 브 라 우 저의 렌 더 링 원리 소개
  • 브 라 우 저의 렌 더 링 원리 에서 CSS 성능
  • 원본 보기:http://www.jackieathome.net/archives/437.html

    좋은 웹페이지 즐겨찾기