Chỉ với một vài thao tác nhỏ, bạn có thể tăng tốc website lên nhiều lần so với hiện tại. Tại sao không thử nhỉ?

Trong bài viết trước mình đã giới thiệu về HTTP/2 và những lợi ích mà nó mang lại. Ngay từ bây giờ, bạn đã có thể áp dụng giao thức HTTP/2 cho website của mình rồi đó.

Một điều lưu ý nhỏ là HTTP/2 chỉ hoạt động khi cả web server và trình duyệt cùng hỗ trợ giao thức, nếu không kết nối sẽ tự động quay lại HTTP/1.1.

– Về phương diện trình duyệt, các trình duyệt phổ biến như Chrome, Firefox, Edge, Safari… đều đã hỗ trợ giao thức HTTP/2 (kiểm tra tại CanIUse). Tuy vậy, tất cả lại chỉ hỗ trợ HTTP/2 qua kết nối SSL/TLS.

Như vậy, để tận hưởng lợi ích của HTTP/2, website cần phải sử dụng SSL.

– Về phương diện Hosting/Server, ngoài SSL, bạn cần đảm bảo hệ thống webserver đã thiết lập HTTP/2.

Nếu bạn dùng Hosting, hãy liên hệ hỏi nhà cung cấp cho chắc chắn. Với StableHost, Hawk Host, AZDIGI thì yên tâm dùng mà không cần hỏi.

Nếu bạn dùng VPS/Cloud Server, hãy kích hoạt HTTP/2 cho webserver thông qua các giao thức trực tiếp/module cài đặt (cụ thể tùy vào từng loại webserver).

Bài viết này mình sẽ hướng dẫn thiết lập HTTP/2 trên VPS sử dụng Nginx webserver (ví dụ HocVPS, Centmin Mod…) tương thích với các trình duyệt phổ biến hiện nay. Bạn cần:

  • Biên dịch mã nguồn Nginx tích hợp OpenSSL phiên bản 1.0.2 trở lên (làm 1 lần duy nhất)
  • Cấu hình SSL HTTP/2 trong Nginx Conf
Nếu bạn đã cài đặt HTTPS theo hướng dẫn cài đặt chứng chỉ SSL hoặc Let’s Encrypt thì chỉ cần tiến hành biên dịch lại mã nguồn Nginx (bước 1) là đã thiết lập được HTTP/2.

1. Tích hợp OpenSSL vào Nginx

Bạn cần tích hợp OpenSSL bằng cách biên dịch lại mã nguồn Nginx. HocVPS lựa chọn phiên bản mới nhất OpenSSL v1.1.0g để tích hợp vào Nginx 1.12.2. Tham khảo các phiên bản khác tại Nginx DownloadOpenSSL Source.


– HocVPS sử dụng Nginx dòng Stable 1.12.x – không phải dòng Mainline 1.13.x.
– Đối với OpenSSL, có thể sử dụng phiên bản 1.0.2x hoặc dòng Stable 1.1.0x
– Các phiên bản đã test thành công: Nginx 1.12.1 + OpenSSL 1.1.0f, Nginx 1.12.2 + OpenSSL 1.1.0g

1.1. Chuẩn bị

– Kiểm tra thông tin Nginx. Thời điểm hiện tại, HocVPS sử dụng Nginx 1.12.1 tích hợp OpenSSL 1.0.1e (mặc định, ra đời từ năm 2013) cùng với các tham số Configure Arguments như phần bôi đỏ. Bạn sẽ cần copy lại các tham số này để tiến hành biên dịch lại Nginx ở bước sau.

# nginx -V
nginx version: nginx/1.12.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'

– Tải và cài đặt các thành phần cần thiết: mã nguồn Nginx 1.12.2, mã nguồn OpenSSL 1.1.0g cùng các trình biên dịch.

# yum install gcc-c++ pcre-devel zlib-devel epel-release -y
# cd /usr/local/src
# wget http://nginx.org/download/nginx-1.12.2.tar.gz && tar -xzvf nginx-1.12.2.tar.gz
# wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz && tar -xzvf openssl-1.1.0g.tar.gz

1.2. Biên dịch Nginx

– Truy cập thư mục Nginx vừa tải để cấu hình mã nguồn với lệnh ./configure cùng toàn bộ tham số Nginx ban đầu (đề cập bước 1.1) và thêm vào --with-openssl=/usr/local/src/openssl-1.1.0g

Lưu ý: Để biên dịch, bạn cần 512MB RAM trở lên (bao gồm cả Swap)

# cd nginx-1.12.2
# ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --with-openssl=/usr/local/src/openssl-1.1.0g

Kết quả hiển thị như dưới là thành công:

Configuration summary
  + using threads
  + using system PCRE library
  + using OpenSSL library: /usr/local/src/openssl-1.1.0g
  + using system zlib library

  nginx path prefix: "/etc/nginx"
  nginx binary file: "/usr/sbin/nginx"
  nginx modules path: "/usr/lib64/nginx/modules"
  nginx configuration prefix: "/etc/nginx"
  nginx configuration file: "/etc/nginx/nginx.conf"
  nginx pid file: "/var/run/nginx.pid"
  nginx error log file: "/var/log/nginx/error.log"
  nginx http access log file: "/var/log/nginx/access.log"
  nginx http client request body temporary files: "/var/cache/nginx/client_temp"
  nginx http proxy temporary files: "/var/cache/nginx/proxy_temp"
  nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp"
  nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp"
  nginx http scgi temporary files: "/var/cache/nginx/scgi_temp"

– Chạy lệnh phía dưới để tiến hành compile Nginx.

# make

Đợi tầm 3-5 phút để tiến trình thành công là bạn có thể sử dụng bộ Nginx đã được biên dịch thủ công để làm Webserver.

1.3. Thay thế Nginx

– Tiến hành thay thế Nginx trên VPS bằng Nginx vừa được biên dịch lại:

# mv /usr/sbin/nginx /usr/sbin/nginx.bak
# cp objs/nginx /usr/sbin/nginx
# service nginx restart

– Kiểm tra lại nếu thấy thông tin như bên dưới là thành công.

# nginx -V
nginx version: nginx/1.12.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
built with OpenSSL 1.1.0g  2 Nov 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --with-openssl=/usr/local/src/openssl-1.1.0g

2. Cấu hình SSL HTTP/2 trong Nginx Conf

Webserver Nginx trên hệ thống của bạn đã sẵn sàng thiết lập giao thức HTTP/2 giữa Server và Browser. Bạn cần kích hoạt giao thức HTTP2 và SSL trong cấu hình Nginx của mỗi site.

Bạn sửa cấu hình Nginx trong block server {…} như sau (chỉnh sửa đối với từng website trong hệ thống).

listen   443 ssl http2;

Cụ thể, bạn cấu hình như hướng dẫn cài đặt chứng chỉ SSL hoặc Let’s Encrypt

3. Kiểm tra

Để kiểm tra, các bạn sử dụng công cụ Developer Tools của trình duyệt hoặc kiểm tra qua website.

Kiểm tra trực tiếp các kết nối trình duyệt tới website với công cụ Developer Tools F12 (trình duyệt nào cũng có). Như bạn đã thấy, HocVPS đã dùng HTTP/2, thời gian load lần đầu homepage chỉ là 2.33s.

Lưu ý: Một số phần mềm Antivirus chặn HTTP/2 Protocol nên cần kiểm tra cả ở máy tính khác và check cả Firefox và Chrome.

  • Với Chrome, nếu không thấy tab Protocol, bạn hãy nhấn chuột phải ở menu để kích hoạt.
  • Với Firefox, các bạn check tab Header trong Network sẽ thấy Version: HTTP/2.0

Bên cạnh đó, bạn có thể kiếm tra qua website HTTP2.pro. Kết quả tích hợp HTTP/2 kèm ALPN là ok.

Hi vọng với bài viết hướng dẫn này, các bạn có thể kích hoạt kết nối giao thức HTTP/2 cho website của mình. Nếu có điều gì thắc mắc, hãy để lại comment bên dưới nhé.

Comment của bạn

Your email address will not be published. Required fields are marked *

159 Comments

  1. Anh 2 comment

    Mình ko hiểu lắm ở mục 1.2 biên dịch nginx, làm sao để truy cập vào và cấu hình

    1. Việt Phương Moderator

      Bạn biên dịch lại Nginx trên mã nguồn vừa tải về ở bước 1.1. chứ không phải biên dịch lại Nginx trên VPS

  2. Tajobs 18 comment

    Đã cài đặt thành công rồi mà khi kiểm tra trên trình duyệt thì một số thành phần vẫn đang dùng http1 nhỉ vd như ảnh, css, javascript.. 🙁

      1. Việt Phương Moderator

        Bạn kiểm tra cả trình duyệt khác nhé. Như mình note có thể do trình duyệt/anti virus của máy chặn protocol H2. Nên trên http2.pro check H2 vs ALPN là ok
        Mình nhìn thì phần lớn css js ảnh bạn qua HTTP/2 rồi, số ít qua HTTP/1.1

  3. tran hung 46 comment

    mình test ở trang http2.pro thì thông báo ok hết, nhưng chỗ PUSH (bên dưới ALPN) thì nó thông báo là NO
    We could not find any resources being pushed. If there are no resources that might benefit from HTTP/2 Push feature, ignore this.
    Có ai biết là lý do gì ko ạ?

  4. Trần Ngọc Châu 4 comment

    Mình cài SSL và HTTP2 mọi thứ đều ổn nhưng không thể truy cập site WordPress của mình được bạn check dùm mình conf với:

    server {
    listen 443 ssl http2;
    server_name taive.online;

    # SSL
    ssl_certificate /etc/letsencrypt/live/taive.online-0001/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/taive.online/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

    # Improve HTTPS performance with session resumption
    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 1d;

    # DH parameters
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    # Enable HSTS
    add_header Strict-Transport-Security “max-age=31536000” always;
    rewrite ^(.*) https://taive.online$1 permanent;
    }

    server {
    listen 80;

    # access_log off;
    access_log /home/taive.online/logs/access.log;
    # error_log off;
    error_log /home/taive.online/logs/error.log;

    root /home/taive.online/public_html;
    index index.php index.html index.htm;
    server_name taive.online;

    # Custom configuration
    include /home/taive.online/public_html/*.conf;

    location / {
    try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include /etc/nginx/fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 32k;
    fastcgi_buffers 8 16k;
    fastcgi_busy_buffers_size 32k;
    fastcgi_temp_file_write_size 32k;
    fastcgi_intercept_errors on;
    fastcgi_param SCRIPT_FILENAME /home/taive.online/public_html$fastcgi_script_name;
    }

    location ~ /\. {
    deny all;
    }

    location = /favicon.ico {
    log_not_found off;
    access_log off;
    }

    location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
    }

    location ~* \.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso|eot|svg|ttf|woff)$ {
    gzip_static off;
    add_header Pragma public;
    add_header Cache-Control “public, must-revalidate, proxy-revalidate”;
    access_log off;
    expires 30d;
    break;
    }

    location ~* \.(txt|js|css)$ {
    add_header Pragma public;
    add_header Cache-Control “public, must-revalidate, proxy-revalidate”;
    access_log off;
    expires 30d;
    break;
    }

    }

    1. Việt Phương Moderator

      Bạn cấu hình sai rồi. Bạn xem lại cấu hình mẫu trong bài viết rồi sửa nhé.
      Block 443 đầu tiên của bạn redirect về chính nó. Xong block 80 thì lại show nội dung web

  5. Tran Ba Dat 17 comment

    Mình chưa làm gì nhưng vẫn thấy server mình đã hỗ trợ http/2 rồi theo cách kiểm tra của bạn. Kiểm tra trên server thì mới chỉ OpenSSL 1.01e thôi. Nên suy ra thì lên SSL là nó vẫn nhận http/2 rồi phải không?

  6. CươngPjh 29 comment

    Anh ơi giờ có Nginx ver 1.12.1 rồi, cho em hỏi là sau khi em update lên em có biên dịch lại bản 1.12.1 được không và nếu được anh cho em xin link wget bản 1.12.1 được không ạ. Em cảm ơn ạ.

    1. Việt Phương Moderator

      Bạn có thể tải tại nginx: download. Bạn compile luôn với bản 1.12.1 rồi thay vào Nginx trong VPS. Bạn nên backup site trước đó. Phiên bản này mình chưa test nên không rõ các module gốc có tích hợp đc để compile không

      1. CươngPjh 29 comment

        Thôi thế em đợi khi nào ổn định có người test vậy hehee, Tại giờ web cũng tương đối là nhanh rồi 😀

        1. Việt Phương Moderator

          Mình test xong rồi nhé Đã update bài viết. Bạn có thể áp dụng luôn

      1. Việt Phương Moderator

        Sao Nginx -V lại command not found? Như vậy chẳng nhẽ VPS bạn không có Nginx hoặc không phải sử dụng Nginx? Rồi bước build trc bạn hiện thông báo gì?

    1. Việt Phương Moderator

      Tức sever bạm không hỗ trợ HTTP/2 Push. Bạn có thể tham khảo thêm trên mạng ý nghĩa tham số này

  7. landon 3 comment

    Cho mình hỏi, nếu dùng lệnh
    nginx -v chỉ cho ra mỗi 1 dòng là : nginx version: nginx/1.12.1
    Chứ nó không cho đầy đủ thông tin ở trên

          1. landon 3 comment

            :D, ah, thank you
            Mình ko nhìn thấy:D
            Giờ ngon lành rồi

  8. Trí 18 comment

    Phần bôi đỏ chổ tham số nginx, mình copy của mình, hay là copy phần trên bài viết?
    Mình copy phần của mình thì nó báo như sau
    /////
    ./configure –user=nginx –group=nginx –prefix=/usr –sbin-path=/usr/sbin –conf-path=/etc/nginx/nginx.conf –pid-path=/var/run/nginx.pid –http-log-path=/var/log/nginx/access_log –error-log-path=/var/log/nginx/error_log –with-ipv6 –without-mail_imap_module –without-mail_smtp_module –with-http_ssl_module –with-http_realip_module –with-http_stub_status_module –with-http_gzip_static_module –with-http_dav_module –with-cc-opt=”-D FD_SETSIZE=32768” –with-openssl=/usr/local/src/openssl-1.1.0f
    /////

    Lỗi =====>
    ./configure: error: invalid option “FD_SETSIZE=32768”

    Giúp mình với.

    1. Trí 18 comment

      Mình đã sửa được lỗi kia, nó thay dấu ngoặc kép bằng 2 dấu ngoặc đơn, tuy nhiên khi thay thế nginx thì mình gặp lỗi
      cp: cannot stat `objs/nginx’: No such file or directory

      Đây là thông tin xuất hiện trước khi gõ lệnh “make”
      Configuration summary
      + using system PCRE library
      + using OpenSSL library: /usr/local/src/openssl-1.1.0f
      + using system zlib library

      nginx path prefix: “/usr”
      nginx binary file: “/usr/sbin”
      nginx modules path: “/usr/modules”
      nginx configuration prefix: “/etc/nginx”
      nginx configuration file: “/etc/nginx/nginx.conf”
      nginx pid file: “/var/run/nginx.pid”
      nginx error log file: “/var/log/nginx/error_log”
      nginx http access log file: “/var/log/nginx/access_log”
      nginx http client request body temporary files: “client_body_temp”
      nginx http proxy temporary files: “proxy_temp”
      nginx http fastcgi temporary files: “fastcgi_temp”
      nginx http uwsgi temporary files: “uwsgi_temp”
      nginx http scgi temporary files: “scgi_temp”
      ================== và các thông số khi gõ “nginx -V” của mình
      –user=nginx –group=nginx –prefix=/usr –sbin-path=/usr/sbin –conf-path=/etc/nginx/nginx.conf –pid-path=/var/run/nginx.pid –http-log-path=/var/log/nginx/access_log –error-log-path=/var/log/nginx/error_log –with-ipv6 –without-mail_imap_module –without-mail_smtp_module –with-http_ssl_module –with-http_realip_module –with-http_stub_status_module –with-http_gzip_static_module –with-http_dav_module –with-cc-opt=”-D FD_SETSIZE=32768″ –with-openssl=/usr/local/src/openssl-1.1.0f

    2. Việt Phương Moderator

      1. Bạn copy phần của bạn, thêm đoạn sau vào cuối
      --with-http_v2_module --with-openssl=/usr/local/src/openssl-1.1.0f
      2. Và bạn nhớ phần FD_SETSIZE=32768 copy y nguyên trên SSH, đừng gõ vì mình nhìn thì hình như dấu ' bị sửa thành "
      Cụ thể nó là : --with-cc-opt='-D FD_SETSIZE=32768'"

      1. Trí 18 comment

        đúng rồi, nó bị cái dấu ngoặc, giờ mình bị cái lỗi như ở trên mình comment

        1. Việt Phương Moderator

          1. Bạn rebuild thêm httpv2 module đi
          2. Bạn make xong thì make install là được. Bởi mình đoán bạn đang không chạy lệnh cp ở trong thư mục build nên nó sẽ không tìm thấy thư mục objs/nginx

          1. Trí 18 comment

            mình hiện chưa biết rebuild httpv2, mình make install như bạn nói thì
            //////
            make -f objs/Makefile install
            make[1]: Entering directory `/usr/local/src/nginx-1.12.1'
            test -d '/usr' || mkdir -p '/usr'
            test -d '/usr' \
            || mkdir -p '/usr'
            test ! -f '/usr/sbin' \
            || mv '/usr/sbin' \
            '/usr/sbin.old'
            cp objs/nginx '/usr/sbin'
            cp: cannot create regular file `/usr/sbin/nginx': Text file busy
            make[1]: *** [install] Error 1
            make[1]: Leaving directory `/usr/local/src/nginx-1.12.1'
            make: *** [install] Error 2

            /////
            có cần chạy 3 lệnh này nữa không
            # mv /usr/sbin/nginx /usr/sbin/nginx.bak
            # cp objs/nginx /usr/sbin/nginx
            # service nginx restart

          2. Việt Phương Moderator

            1. Comment trên nữa mình có ghi đó, lúc compile với trường hợp DirectAdmin bạn cần --with-http_v2_module --with-openssl=/usr/local/src/openssl-1.1.0f
            2. Lỗi rồi. Bạn cần stop nginx trước khi chạy make install
            Hoặc nếu dùng 3 lệnh trong bài hướng dẫn thì bạn phải đảm bảo lệnh được chạy khi bạn đang ở thư mục /usr/local/src/nginx-1.12.1
            Thì khi đó bên trong nó mới tồn tại thư mục objs/nginx

          3. Trí 18 comment

            Mình đã cài thành công, cám ơn mod. Lát đi kiêm hướng dẫn chỉnh sửa file bằng nano nữa :v
            Cho mình hỏi, trong /etc/nginx mình không thấy conf.d đâu cả?

          4. Việt Phương Moderator

            1.Cách sử dụng Nano editor
            2. Mình nghĩ DirectAdmin nó đặt Nginx Conf của các site trong 1 file .conf duy nhất. Nên bạn mở tất cả các file trong /etc/nginx/ đọc xem file nào quy định các server_name là chính file đó. Mà Direct ADmin dùng Nginx là reserve proxy cho Apache thì phải

          5. Trí 18 comment

            Mình đã thấy mấy file conf đó, nó nằm tuốt trong đây /usr/local/directadmin/data/users/minhkhang/nginx.conf. Mình check bằng site http2.pro thì OK, nhưng F12 trên chrome thì toàn http 1/1. Bạn xem 2 hình mình gửi kèm nhé.
            https://prnt.sc/ghulyw
            https://prnt.sc/ghumaz

  9. Mai Nam 11 comment

    Cám ơn bạn .
    Giờ xu hướng là phải https nên kết hợp cái này nữa là ngon luôn.

  10. Trung 3 comment

    Hi Anh cho em hỏi:

    Hôm trước em có add domain nhưng lỗi gì đó không được nên đã xoá domain đi. Sau hnay restart lại VPS thì gặp lỗi như sau và không vào được web.

    sudo nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: [emerg] open() “/home/tenmien.vn/logs/access.log” failed (2: No such file or directory)
    nginx: configuration file /etc/nginx/nginx.conf test failed

    Em đã thử: touch /home/tenmien.vn/logs/access.log nhưng vẫn không có gì xảy ra. Nginx hình như không chạy.
    Nhờ anh hướng dẫn cách xử lí.

    1. Việt Phương Moderator

      Sau bạn tạo website bằng menu thì xóa bằng menu nhé, vì 1 website hoạt động không chỉ có source code mà còn có virtual host quy định
      Bạn kiểm tra trong /etc/nginx/conf.d còn cấu hình của website đó thì xóa đi

  11. Quang Huy Tran 22 comment

    Ở bước 2, nếu site k có ssl thì có kích hoạt đc HTTP/2 không ạ?

    1. Việt Phương Moderator

      Không bạn nhé, HTTP/2 đi cùng với SSL như trong bài viết đã note
      để tận hưởng lợi ích của HTTP/2, website cần phải sử dụng SSL.

  12. CươngPjh 29 comment

    Vừa make nginx 1.12.2 và đã thành công với HTTP/2 thông tin đến anh em nào đang định nâng cấp lên Nginx 1.12.2 nhé.

    1. Việt Phương Moderator

      Well noted with thanks 😀 Do bản 1.12.2 mới ra 17/10 nên mình đang để thời gian theo dõi và sẽ update vào bài viết sớm nhất có thể

  13. James 3 comment

    Lỗi này xuất hiện sau lệnh # make ạ, cho mình hỏi fix như thế nào?
    src/http/ngx_http_header_filter_module.c:49:3: error: invalid preprocessing directive #static
    # static u_char ngx_http_server_string[] = “Server: nginx” CRLF;
    ^
    src/http/ngx_http_header_filter_module.c:50:3: error: invalid preprocessing directive #static
    # static u_char ngx_http_server_full_string[] = “Server: ” NGINX_VER CRLF;
    ^
    src/http/ngx_http_header_filter_module.c:51:3: error: invalid preprocessing directive #static
    # static u_char ngx_http_server_build_string[] = “Server: ” NGINX_VER_BUILD CRLF;

    1. Việt Phương Moderator

      Mình chưa định hướng ra được lỗi bạn do gì.
      1. Hệ thống bạn là gì
      2. Bạn post full câu lệnh ./configure của bạn ra

      1. James 3 comment

        Mình dùng hocvps mới nhất đó bạn, có cài varnish, x-page-speed, đây là full lệnh sau khi thực thi ok mình dùng lệnh # make thì bị lỗi như trên:
        ./configure –prefix=/etc/nginx –sbin-path=/usr/sbin/nginx –modules-path=/usr/lib64/nginx/modules –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-log-path=/var/log/nginx/access.log –pid-path=/var/run/nginx.pid –lock-path=/var/run/nginx.lock –http-client-body-temp-path=/var/cache/nginx/client_temp –http-proxy-temp-path=/var/cache/nginx/proxy_temp –http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp –http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp –http-scgi-temp-path=/var/cache/nginx/scgi_temp –user=nginx –group=nginx –with-compat –with-file-aio –with-threads –with-http_addition_module –with-http_auth_request_module –with-http_dav_module –with-http_flv_module –with-http_gunzip_module –with-http_gzip_static_module –with-http_mp4_module –with-http_random_index_module –with-http_realip_module –with-http_secure_link_module –with-http_slice_module –with-http_ssl_module –with-http_stub_status_module –with-http_sub_module –with-http_v2_module –with-mail –with-mail_ssl_module –with-stream –with-stream_realip_module –with-stream_ssl_module –with-stream_ssl_preread_module –with-cc-opt=’-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong –param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC’ –with-ld-opt=’-Wl,-z,relro -Wl,-z,now -pie’ –with-openssl=/usr/local/src/openssl-1.1.0g –add-module=/usr/local/src/ngx_pagespeed-1.12.34.3-stable

  14. Quang Hua^n 7 comment

    Phiên bản hiện tại của nginx -V mình đang chạy là
    nginx version: nginx/1.12.2 thì cài tích hợp OpenSSL v?? vậy ad?

  15. Khánh 4 comment

    Bạn ơi,,

    Nếu check nginx với thông số như dưới thì có cần biên dịch lại ko bạn:

    nginx version: nginx/1.12.2
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
    built with OpenSSL 1.0.2k-fips 26 Jan 2017

    Thanks

    1. Việt Phương Moderator

      Bạn cứ dùng các công cụ test HTTP/2 bên dưới là rõ mà. Mình đoán là không.

  16. Duy Phong 5 comment

    Mình làm theo thì website bị lỗi từ chối kết nối. Và không vào được phpmyadmin luôn ạ. 🙁
    Có ai cứu với .

      1. Duy Phong 5 comment

        Của mình đây ad ạ 🙁
        # nginx -t
        nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
        nginx: [emerg] bind() to 45.124.87.15:80 failed (99: Cannot assign requested address)
        nginx: configuration file /etc/nginx/nginx.conf test failed
        ———-
        # service nginx status
        Redirecting to /bin/systemctl status nginx.service
        ● nginx.service – The nginx HTTP and reverse proxy server
        Loaded: loaded (/etc/systemd/system/nginx.service; enabled; vendor preset: disabled)
        Active: failed (Result: exit-code) since Wed 2017-11-22 15:50:06 +07; 9s ago
        Process: 2188 ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)

        Nov 22 15:50:06 vps.bkcloud.vn systemd[1]: Starting The nginx HTTP and rever….
        Nov 22 15:50:06 vps.bkcloud.vn nginx[2188]: nginx: the configuration file /e…k
        Nov 22 15:50:06 vps.bkcloud.vn nginx[2188]: nginx: [emerg] bind() to 45.124….)
        Nov 22 15:50:06 vps.bkcloud.vn nginx[2188]: nginx: configuration file /etc/n…d
        Nov 22 15:50:06 vps.bkcloud.vn systemd[1]: nginx.service: control process ex…1
        Nov 22 15:50:06 vps.bkcloud.vn systemd[1]: Failed to start The nginx HTTP an….
        Nov 22 15:50:06 vps.bkcloud.vn systemd[1]: Unit nginx.service entered failed….
        Nov 22 15:50:06 vps.bkcloud.vn systemd[1]: nginx.service failed.
        Hint: Some lines were ellipsized, use -l to show in full.

        1. Việt Phương Moderator

          service nginx status -l bạn. Mà lỗi bạn còn không assign được IP. Cho mình cả kết quả của nginx -V

          1. Duy Phong 5 comment

            Dạ đây ad ạ 🙁

            Redirecting to /bin/systemctl status nginx.service
            ● nginx.service – The nginx HTTP and reverse proxy server
            Loaded: loaded (/etc/systemd/system/nginx.service; enabled; vendor preset: disabled)
            Active: failed (Result: exit-code) since Wed 2017-11-22 15:58:07 +07; 2s ago
            Process: 2942 ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)

            Nov 22 15:58:07 vps.bkcloud.vn systemd[1]: Starting The nginx HTTP and rever….
            Nov 22 15:58:07 vps.bkcloud.vn nginx[2942]: nginx: the configuration file /e…k
            Nov 22 15:58:07 vps.bkcloud.vn nginx[2942]: nginx: [emerg] bind() to 45.124….)
            Nov 22 15:58:07 vps.bkcloud.vn nginx[2942]: nginx: configuration file /etc/n…d
            Nov 22 15:58:07 vps.bkcloud.vn systemd[1]: nginx.service: control process ex…1
            Nov 22 15:58:07 vps.bkcloud.vn systemd[1]: Failed to start The nginx HTTP an….
            Nov 22 15:58:07 vps.bkcloud.vn systemd[1]: Unit nginx.service entered failed….
            Nov 22 15:58:07 vps.bkcloud.vn systemd[1]: nginx.service failed.
            Hint: Some lines were ellipsized, use -l to show in full.
            [root@vps ~]# service nginx status -l
            Redirecting to /bin/systemctl status -l nginx.service
            ● nginx.service – The nginx HTTP and reverse proxy server
            Loaded: loaded (/etc/systemd/system/nginx.service; enabled; vendor preset: disabled)
            Active: failed (Result: exit-code) since Wed 2017-11-22 15:58:07 +07; 48s ago
            Process: 2942 ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)

            Nov 22 15:58:07 vps.bkcloud.vn systemd[1]: Starting The nginx HTTP and reverse proxy server…
            Nov 22 15:58:07 vps.bkcloud.vn nginx[2942]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
            Nov 22 15:58:07 vps.bkcloud.vn nginx[2942]: nginx: [emerg] bind() to 45.124.87.15:80 failed (99: Cannot assign requested address)
            Nov 22 15:58:07 vps.bkcloud.vn nginx[2942]: nginx: configuration file /etc/nginx/nginx.conf test failed
            Nov 22 15:58:07 vps.bkcloud.vn systemd[1]: nginx.service: control process exited, code=exited status=1
            Nov 22 15:58:07 vps.bkcloud.vn systemd[1]: Failed to start The nginx HTTP and reverse proxy server.
            Nov 22 15:58:07 vps.bkcloud.vn systemd[1]: Unit nginx.service entered failed state.
            Nov 22 15:58:07 vps.bkcloud.vn systemd[1]: nginx.service failed.

        2. Duy Phong 5 comment

          Còn đây là nginx -V ạ

          nginx version: nginx/1.13.3
          built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
          built with OpenSSL 1.0.2k-fips 26 Jan 2017
          TLS SNI support enabled
          configure arguments: –add-module=../modsecurity_nginx-2.9.0/nginx/modsecurity –user=nginx –group=nginx –prefix=/usr –sbin-path=/usr/sbin –conf-path=/etc/nginx/nginx.conf –pid-path=/var/run/nginx.pid –http-log-path=/var/log/nginx/access_log –error-log-path=/var/log/nginx/error_log –with-ipv6 –without-mail_imap_module –without-mail_smtp_module –with-http_ssl_module –with-http_realip_module –with-http_stub_status_module –with-http_gzip_static_module –with-http_dav_module –with-http_v2_module –with-cc-opt=”-D FD_SETSIZE=32768”

          1. Việt Phương Moderator

            Bạn nên làm theo đúng hướng dẫn nhé. Các phiên bản OpenSSL mới nhất và Nginx mới nhất chưa hề được test nên không đảm bảo độ tương thích
            Cũng như việc HocVPs dùng nginx stable, tức 1.12.x không sử dụng Nginx mainline (1.13.x)

          2. Duy Phong 5 comment

            Dạ. mình có gửi mail cho ad rồi ạ. Vì lúc cài là mình cài bản 1.13.1. Lúc bị lỗi mình mới tải bản mới nhất về để cứt vãn tình thế ạ 🙁

          3. Việt Phương Moderator

            Hướng dẫn sử dụng Nginx Stable 1.12.x bạn à

  17. hong vi 34 comment

    uạ sao web mình xem chỗ protocol thì có cái http/1.1 có cái thì http/ 2 là sao nhỉ… check ở /http2.pro thì nó báo đã là http/2

    1. Việt Phương Moderator

      Tùy từng đối tượng nên không cụ thể và ổn định nhé bạn