[Ubuntu, Nginx] HTTP/2 적용하기
카테고리: Linux(Ubuntu)
HTTP/2
HTTP/2는 HTTP/1.1과는 달리, TCP 연결 하나로 여러 파일들(.js, .css, .jpg, .png 등)을 병렬 전송하여 서버단에서는 소켓의 낭비를 줄이고 클라이언트 단에서는 SPDY의 최대 병렬 다운로드 개수인 6개를 넘어서 더 빠르게 로딩이 가능해진다.
Nginx에서는 1.9.5 버전부터 HTTP/2를 지원하게 되었다.
https://www.nginx.com/blog/nginx-1-9-5/
1. Nginx 업데이트(< 1.9.5인 경우)
Nginx는 아래의 명령어를 사용하여 다운로드 받거나 업데이트할 수 있다.
# 새로 다운로드 받는 경우
apt-get install nginx
# nginx 버전이 낮아 nginx만 업데이트 하려는 경우( < 1.9.5)
nginx -v
apt-get install --only-upgrade nginx
2. Nginx에 TLS 적용하기(Https가 적용되어 있지 않은 경우)
그리고 Nginx에서 HTTP/2를 사용하기 위해서는 브라우저들이 TLS의 적용 없이는 HTTP/2 연결을 허용하지 않고 HTTP/1.1로 연결 시킨다.
Firefox will only be implementing HTTP/2 over TLS - and so far that means for https:// schemed URLs (see below for http:// with TLS support).
It does enforce the protocol’s >= TLS 1.2 requirement - if a server negotiates HTTP/2 with a lower TLS version it is treated as a protocol error. (there is a preference for changing that for testing purposes if you need it.)
https://wiki.mozilla.org/Networking/Archive/http2
따라서 TLS를 적용하기 위해서는 인증서를 발급받아서 서버에 적용하여야 한다.
https://syudal.github.io/post/Ubuntu-Nginx-Lets-Encrypt로-https-적용하기/
3. HTTP/2 설정하기
서버에 인증서가 적용된 경우 아래와 같이 설정이 되어 있는데, 간단히 ssl뒤에 http2만 추가하면 된다.
일반적으로 etc/nginx/sites-available/에 존재한다.
server {
listen 443 ssl http2 default_server;
ssl_certificate server.crt;
ssl_certificate_key server.key;
...
}
이후, 아래와 같은 명령어로 nginx를 재시작하고 해당 사이트에 접속하면 h2 protocol로 잘 접속되는 것을 볼 수 있다.
service nginx restart