Thứ ba, 20/12/2016 | 00:00 GMT+7

Cách tạo chứng chỉ SSL tự ký cho Nginx trên Debian 8

TLS , hay transport layer security và SSL tiền nhiệm của nó, viết tắt của lớp cổng bảo mật, là các giao thức web được sử dụng để bọc lưu lượng truy cập bình thường trong một lớp bao bọc được mã hóa, được bảo vệ.

Sử dụng công nghệ này, các server có thể gửi lưu lượng một cách an toàn giữa server và client mà không có khả năng các thông điệp bị chặn bởi các bên bên ngoài. Hệ thống certificate cũng hỗ trợ user xác minh danh tính của các trang web mà họ đang kết nối.

Trong hướng dẫn này, ta sẽ chỉ cho bạn cách cài đặt certificate SSL tự ký để sử dụng với web server Nginx trên server Debian 8.

Lưu ý: Chứng chỉ tự ký sẽ mã hóa giao tiếp giữa server của bạn và bất kỳ client nào. Tuy nhiên, vì nó không được ký bởi bất kỳ tổ chức cấp certificate tin cậy nào có trong trình duyệt web, user không thể sử dụng certificate để xác thực danh tính server của bạn một cách tự động.

Chứng chỉ tự ký có thể phù hợp nếu bạn không có domain được liên kết với server của bạn và đối với các trường hợp giao diện web được mã hóa không hướng tới user . Nếu bạn có một domain , trong nhiều trường hợp nó là tốt hơn để sử dụng một certificate CA-ký. Bạn có thể tìm hiểu cách cài đặt certificate tin cậy miễn phí với dự án Let's Encrypt tại đây .

Yêu cầu

Trước khi bắt đầu, bạn nên cấu hình một user không phải root với các quyền sudo . Bạn có thể tìm hiểu cách cài đặt một account user như vậy theo cài đặt server ban đầu của ta dành cho Debian 8 .

Bạn cũng cần phải cài đặt web server Nginx. Nếu bạn muốn cài đặt toàn bộ LEMP (Linux, Nginx, MySQL, PHP) trên server của bạn , bạn có thể làm theo hướng dẫn của ta về cách cài đặt LEMP trên Debian 8 .

Nếu bạn chỉ muốn web server Nginx, bạn có thể làm theo hướng dẫn của ta về cách cài đặt Nginx trên Debian 8 .

Khi bạn đã hoàn thành các yêu cầu , hãy tiếp tục bên dưới.

Bước 1: Tạo certificate SSL

TLS / SSL hoạt động bằng cách sử dụng kết hợp public certificate và private key . Khóa SSL được giữ bí mật trên server . Nó được sử dụng để mã hóa nội dung được gửi đến client . Chứng chỉ SSL được chia sẻ công khai với bất kỳ ai yêu cầu nội dung. Nó được dùng để giải mã nội dung được ký bởi khóa SSL liên quan.

Ta có thể tạo một cặp certificate và khóa tự ký với OpenSSL trong một lệnh duy nhất:

  • sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt

Bạn sẽ được hỏi một loạt câu hỏi. Trước khi xem xét điều đó, hãy xem điều gì đang xảy ra trong lệnh mà ta đang phát hành:

  • openssl : Đây là công cụ dòng lệnh cơ bản để tạo và quản lý certificate OpenSSL, khóa và các file khác.
  • req : Lệnh con này chỉ định rằng ta muốn sử dụng quản lý yêu cầu ký certificate (CSR) X.509. “X.509” là tiêu chuẩn cơ sở hạ tầng public key mà SSL và TLS tuân theo để quản lý khóa và certificate của nó. Ta muốn tạo một certificate X.509 mới, vì vậy ta đang sử dụng lệnh con này.
  • -x509 : Điều này sửa đổi thêm lệnh con trước đó bằng cách nói với tiện ích rằng ta muốn tạo certificate tự ký thay vì tạo yêu cầu ký certificate , như thường lệ.
  • -nodes : Điều này yêu cầu OpenSSL bỏ qua tùy chọn bảo mật certificate của ta bằng passphrase (password bảo vệ) . Ta cần Nginx để có thể đọc file mà không cần sự can thiệp của user , khi server khởi động. Passphrase (password bảo vệ) sẽ ngăn điều này xảy ra vì ta sẽ phải nhập passphrase (password bảo vệ) sau mỗi lần khởi động lại.
  • -days 365 : Tùy chọn này đặt khoảng thời gian mà certificate sẽ được coi là hợp lệ. Ta đặt nó trong một năm ở đây.
  • -newkey rsa: 2048 : Điều này chỉ định rằng ta muốn tạo certificate mới và khóa mới cùng một lúc. Ta đã không tạo khóa bắt buộc phải ký certificate ở bước trước, vì vậy ta cần tạo khóa cùng với certificate . Phần rsa:2048 yêu cầu nó tạo một khóa RSA dài 2048 bit.
  • -keyout : Dòng này cho OpenSSL biết nơi đặt file private key đã tạo mà ta đang tạo.
  • -out : Điều này cho OpenSSL biết nơi đặt certificate mà ta đang tạo.

Như ta đã nêu ở trên, các tùy chọn này sẽ tạo cả file khóa và certificate . Ta sẽ được hỏi một số câu hỏi về server của ta để nhúng thông tin một cách chính xác vào certificate .

Điền vào các dấu nhắc một cách thích hợp. Dòng quan trọng nhất là dòng yêu cầu Common Name (eg server FQDN or YOUR name) . Bạn cần nhập domain được liên kết với server của bạn hoặc nhiều khả năng hơn là địa chỉ IP công cộng của server .

Toàn bộ dấu nhắc sẽ trông giống như sau:

Output
Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:New York Locality Name (eg, city) []:New York City Organization Name (eg, company) [Internet Widgits Pty Ltd]:Bouncy Castles, Inc. Organizational Unit Name (eg, section) []:Ministry of Water Slides Common Name (e.g. server FQDN or YOUR name) []:server_IP_address Email Address []:admin@your_domain.com

Cả hai file bạn đã tạo sẽ được đặt trong các folder con thích hợp của folder /etc/ssl .

Trong khi ta đang sử dụng OpenSSL, ta cũng nên tạo một group Diffie-Hellman mạnh mẽ, được sử dụng để đàm phán Perfect Forward Secrecy với khách hàng.

Ta có thể làm điều này bằng lệnh :

  • sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Quá trình này có thể mất vài phút, nhưng khi hoàn tất, bạn sẽ có một group DH mạnh tại /etc/ssl/certs/dhparam.pem mà ta có thể sử dụng trong cấu hình của bạn .

Bước 2: Cấu hình Nginx để sử dụng SSL

Ta đã tạo các file khóa và certificate của bạn trong folder /etc/ssl . Bây giờ ta chỉ cần sửa đổi cấu hình Nginx của bạn để tận dụng những lợi ích này.

Ta sẽ thực hiện một vài điều chỉnh đối với cấu hình của bạn .

  1. Ta sẽ tạo đoạn mã cấu hình chứa khóa SSL và các vị trí file certificate của ta .
  2. Ta sẽ tạo đoạn mã cấu hình chứa cài đặt SSL mạnh được dùng với bất kỳ certificate nào trong tương lai.
  3. Ta sẽ điều chỉnh các khối server Nginx của bạn để xử lý các yêu cầu SSL và sử dụng hai đoạn mã trên.

Phương pháp cấu hình Nginx này sẽ cho phép ta giữ các khối server sạch sẽ và đưa các phân đoạn cấu hình chung vào các module có thể tái sử dụng.

Tạo đoạn mã cấu hình trỏ đến khóa và certificate SSL

Đầu tiên, hãy tạo đoạn mã cấu hình Nginx mới trong folder /etc/nginx/snippets .

Để phân biệt đúng mục đích của file này, hãy gọi nó là self-signed.conf :

  • sudo nano /etc/nginx/snippets/self-signed.conf

Trong file này, ta chỉ cần đặt chỉ thị ssl_certificate thành file certificate của ta và ssl_certificate_key thành khóa được liên kết. Trong trường hợp của ta , nó sẽ trông như thế này:

/etc/nginx/snippets/self-signed.conf
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; 

Khi bạn đã thêm những dòng đó, hãy lưu file .

Tạo đoạn mã cấu hình với cài đặt mã hóa mạnh

Tiếp theo, ta sẽ tạo một đoạn mã khác sẽ xác định một số cài đặt SSL. Điều này sẽ cài đặt Nginx với bộ mật mã SSL mạnh mẽ và kích hoạt một số tính năng nâng cao sẽ giúp giữ an toàn cho server của ta .

Các tham số ta sẽ đặt được dùng lại trong các cấu hình Nginx trong tương lai, vì vậy ta sẽ đặt tên chung cho file :

  • sudo nano /etc/nginx/snippets/ssl-params.conf

Để cài đặt Nginx SSL một cách an toàn, ta sẽ sử dụng các đề xuất của Remy van Elst trên trang Cipherli.st . Trang web này được thiết kế để cung cấp cài đặt mã hóa dễ sử dụng cho phần mềm phổ biến. Bạn có thể đọc thêm về các quyết định của anh ấy liên quan đến các lựa chọn Nginx tại đây .

Các cài đặt được đề xuất trên trang web được liên kết ở trên cung cấp khả năng bảo mật mạnh mẽ. Đôi khi, điều này phải trả giá bằng khả năng tương thích với client cao hơn. Nếu bạn cần hỗ trợ các ứng dụng client cũ hơn, có một danh sách thay thế có thể được truy cập bằng cách nhấp vào liên kết trên trang có nhãn “Có, hãy cung cấp cho tôi trang web mật mã hoạt động với phần mềm cũ / cũ”. Danh sách đó có thể được thay thế cho các mục được sao chép bên dưới.

Việc lựa chọn cấu hình nào bạn sử dụng sẽ phụ thuộc phần lớn vào những gì bạn cần hỗ trợ. Cả hai đều sẽ cung cấp bảo mật tuyệt vời.

Vì mục đích của ta , ta có thể sao chép toàn bộ các cài đặt được cung cấp. Ta chỉ cần thực hiện một vài sửa đổi nhỏ.

Đầu tiên, ta sẽ thêm trình phân giải DNS ưa thích của bạn cho các yêu cầu ngược dòng. Ta sẽ sử dụng Google cho hướng dẫn này. Ta cũng sẽ tiếp tục và đặt cài đặt ssl_dhparam trỏ đến file Diffie-Hellman mà ta đã tạo trước đó.

Cuối cùng, bạn nên dành một chút thời gian để đọc về Bảo mật truyền tải nghiêm ngặt HTTP hoặc HSTS và cụ thể là về chức năng “tải trước” . Tải trước HSTS cung cấp khả năng bảo mật cao hơn, nhưng có thể gây ra hậu quả sâu rộng nếu vô tình được bật hoặc bật không đúng cách. Trong hướng dẫn này, ta sẽ không tải trước cài đặt, nhưng bạn có thể sửa đổi cài đặt đó nếu bạn chắc chắn rằng bạn hiểu các hàm ý:

/etc/nginx/snippets/ssl-params.conf
# from https://cipherli.st/ # and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_ecdh_curve secp384r1; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; # Disable preloading HSTS for now.  You can use the commented out header line that includes # the "preload" directive if you understand the implications. #add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; add_header Strict-Transport-Security "max-age=63072000; includeSubdomains"; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff;  ssl_dhparam /etc/ssl/certs/dhparam.pem; 

Bởi vì ta đang sử dụng certificate tự ký, ghim SSL sẽ không được sử dụng. Nginx sẽ chỉ xuất ra một cảnh báo, tắt ghim cho certificate tự ký của ta và tiếp tục hoạt động chính xác.

Lưu file khi bạn hoàn tất.

Điều chỉnh cấu hình Nginx để sử dụng SSL

Bây giờ ta đã có các đoạn mã của bạn , ta có thể điều chỉnh cấu hình Nginx của bạn để bật SSL.

Trong hướng dẫn này, ta sẽ giả định bạn đang sử dụng file khối server default trong folder /etc/nginx/sites-available . Nếu bạn đang sử dụng một file khối server khác, hãy thay thế tên của nó trong các lệnh bên dưới.

Trước khi tiếp tục, hãy backup file khối server hiện tại của ta :

  • sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak

Bây giờ, hãy mở file khối server để thực hiện các điều chỉnh:

  • sudo nano /etc/nginx/sites-available/default

Bên trong, khối server của bạn có thể bắt đầu như sau:

/ etc / nginx / sites-available / default
server {     listen 80 default_server;     listen [::]:80 default_server;      # SSL configuration      # listen 443 ssl default_server;     # listen [::]:443 ssl default_server;      . . . 

Ta sẽ sửa đổi cấu hình này để các yêu cầu HTTP không được mã hóa tự động được chuyển hướng đến HTTPS được mã hóa. Điều này cung cấp bảo mật tốt nhất cho các trang web của ta . Nếu bạn muốn cho phép cả truy cập HTTP và HTTPS, hãy sử dụng cấu hình thay thế sau.

Ta sẽ chia cấu hình thành hai khối riêng biệt. Sau hai chỉ thị listen đầu tiên, ta sẽ thêm chỉ thị server_name , được đặt thành domain của server của bạn hoặc nhiều khả năng là địa chỉ IP. Sau đó, ta sẽ cài đặt chuyển hướng đến khối server thứ hai mà ta sẽ tạo. Sau đó, ta sẽ đóng khối ngắn này:

Lưu ý: Ta sẽ sử dụng chuyển hướng 302 cho đến khi ta xác minh mọi thứ đang hoạt động bình thường. Sau đó, ta có thể thay đổi điều này thành chuyển hướng 301 vĩnh viễn.

/ etc / nginx / sites-available / default
server {     listen 80 default_server;     listen [::]:80 default_server;     server_name server_domain_or_IP;     return 302 https://$server_name$request_uri; }      # SSL configuration      # listen 443 ssl default_server;     # listen [::]:443 ssl default_server;      . . . 

Tiếp theo, ta cần khởi động một khối server mới ngay bên dưới để chứa cấu hình còn lại. Ta có thể bỏ ghi chú hai lệnh listen sử dụng cổng 443. Sau đó, ta chỉ cần đưa vào hai file đoạn mã mà ta đã cài đặt :

Lưu ý: Bạn có thể chỉ có một chỉ thị listen bao gồm công cụ sửa đổi default_server cho mỗi version IP và kết hợp cổng. Nếu bạn đã bật các khối server khác cho các cổng này đã đặt default_server , bạn phải xóa công cụ sửa đổi khỏi một trong các khối.

/ etc / nginx / sites-available / default
server {     listen 80 default_server;     listen [::]:80 default_server;     server_name server_domain_or_IP;     return 302 https://$server_name$request_uri; }  server {      # SSL configuration      listen 443 ssl default_server;     listen [::]:443 ssl default_server;     include snippets/self-signed.conf;     include snippets/ssl-params.conf;      . . . 

Lưu file khi bạn hoàn tất.

(Cấu hình thay thế) Cho phép cả truy cập HTTP và HTTPS

Nếu bạn muốn hoặc cần cho phép cả nội dung được mã hóa và không được mã hóa, bạn sẽ phải cấu hình Nginx hơi khác một chút. Điều này thường không được khuyến khích nếu có thể tránh được, nhưng trong một số trường hợp, nó có thể cần thiết. Về cơ bản, ta chỉ nén hai khối server riêng biệt thành một khối và xóa chuyển hướng:

/ etc / nginx / sites-available / default
server {     listen 80 default_server;     listen [::]:80 default_server;     listen 443 ssl default_server;     listen [::]:443 ssl default_server;      server_name server_domain_or_IP;     include snippets/self-signed.conf;     include snippets/ssl-params.conf;      . . . 

Lưu file khi bạn hoàn tất.

Bước 3: Điều chỉnh firewall

Nếu bạn đã bật firewall , bạn cần điều chỉnh cài đặt để cho phép lưu lượng SSL. Quy trình bắt buộc phụ thuộc vào phần mềm firewall bạn đang sử dụng. Nếu hiện tại bạn chưa cấu hình firewall , vui lòng bỏ qua.

UFW

Nếu bạn đang sử dụng ufw , bạn có thể xem cài đặt hiện tại bằng lệnh :

  • sudo ufw status

Nó có thể sẽ giống như thế này, nghĩa là chỉ truy cập HTTP được phép đến web server :

Output
Status: active To Action From -- ------ ---- SSH ALLOW Anywhere WWW ALLOW Anywhere SSH (v6) ALLOW Anywhere (v6) WWW (v6) ALLOW Anywhere (v6)

Ngoài ra, để cho phép lưu lượng truy cập HTTPS, ta có thể cho phép cấu hình “WWW Đầy đủ” và sau đó xóa phụ cấp cấu hình “WWW” dư thừa:

  • sudo ufw allow 'WWW Full'
  • sudo ufw delete allow 'WWW'

Trạng thái của bạn bây giờ sẽ như thế này:

  • sudo ufw status
Output
Status: active To Action From -- ------ ---- SSH ALLOW Anywhere WWW Full ALLOW Anywhere SSH (v6) ALLOW Anywhere (v6) WWW Full (v6) ALLOW Anywhere (v6)

Các yêu cầu HTTPS hiện sẽ được server của bạn chấp nhận.

IPTables

Nếu bạn đang sử dụng iptables , bạn có thể xem các luật hiện tại bằng lệnh :

  • sudo iptables -S

Nếu bạn đã bật bất kỳ luật nào, chúng sẽ được hiển thị. Một cấu hình ví dụ có thể trông như thế này:

Output
-P INPUT DROP -P FORWARD ACCEPT -P OUTPUT ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Các lệnh cần thiết để mở lưu lượng SSL sẽ phụ thuộc vào các luật hiện tại của bạn. Đối với bộ luật cơ bản như luật ở trên, bạn có thể thêm quyền truy cập SSL bằng lệnh :

  • sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Nếu ta xem lại các luật firewall , ta sẽ thấy luật mới:

  • sudo iptables -S
Output
-P INPUT DROP -P FORWARD ACCEPT -P OUTPUT ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Nếu bạn đang sử dụng một chương trình để tự động áp dụng các luật iptables khi khởi động, bạn cần đảm bảo bạn cập nhật cấu hình của bạn với luật mới.

Bước 4: Bật các thay đổi trong Nginx

Bây giờ ta đã áp dụng các thay đổi và điều chỉnh firewall của bạn , ta có thể khởi động lại Nginx để áp dụng các thay đổi mới của bạn .

Trước tiên, ta nên kiểm tra đảm bảo rằng không có lỗi cú pháp nào trong các file của ta . Ta có thể làm điều này bằng lệnh :

  • sudo nginx -t

Nếu mọi thứ thành công, bạn sẽ nhận được kết quả như sau:

Output
nginx: [warn] "ssl_stapling" ignored, issuer certificate not found nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Lưu ý cảnh báo trong đầu. Như đã lưu ý trước đó, cài đặt cụ thể này đưa ra cảnh báo vì certificate tự ký của ta không thể sử dụng ghim SSL. Điều này được mong đợi và server của ta vẫn có thể mã hóa các kết nối một cách chính xác.

Nếu kết quả của bạn phù hợp với những điều trên, thì file cấu hình của bạn không có lỗi cú pháp. Ta có thể khởi động lại Nginx một cách an toàn để áp dụng các thay đổi của bạn :

  • sudo systemctl restart nginx

Server của ta hiện có thể truy cập được qua HTTPS.

Bước 5: Kiểm tra mã hóa

Bây giờ, ta đã sẵn sàng để kiểm tra server SSL của bạn .

Mở trình duyệt web và nhập https:// theo sau là domain hoặc IP của server vào thanh địa chỉ:

https://server_domain_or_IP 

Vì certificate mà ta đã tạo không được ký bởi một trong những tổ chức phát hành certificate tin cậy của trình duyệt của bạn, bạn có thể sẽ thấy một cảnh báo trông đáng sợ như hình dưới đây:

Cảnh báo certificate  tự ký của Nginx

Điều này được mong đợi và bình thường. Ta chỉ quan tâm đến khía cạnh mã hóa của certificate của ta , chứ không phải sự xác nhận của bên thứ ba về tính xác thực của server của ta . Nhấp vào “NÂNG CAO” và sau đó nhấp vào liên kết được cung cấp để tiếp tục với server của bạn:

Ghi đè tự ký của Nginx

Bạn sẽ được đưa đến trang web . Nếu bạn nhìn vào thanh địa chỉ của trình duyệt, bạn sẽ thấy một số dấu hiệu về bảo mật một phần. Đây có thể là một ổ khóa có dấu “x” trên đó hoặc hình tam giác với dấu chấm than. Trong trường hợp này, điều này chỉ nghĩa là certificate không thể được xác thực. Nó vẫn đang mã hóa kết nối của bạn.

Nếu bạn đã cấu hình Nginx với hai khối server , tự động chuyển hướng nội dung HTTP sang HTTPS, bạn cũng có thể kiểm tra xem chuyển hướng có hoạt động chính xác hay không:

http://server_domain_or_IP 

Nếu điều này dẫn đến cùng một biểu tượng, điều này nghĩa là chuyển hướng của bạn đã hoạt động chính xác.

Bước 6: Thay đổi thành Chuyển hướng vĩnh viễn

Nếu chuyển hướng của bạn hoạt động chính xác và bạn chắc chắn chỉ muốn cho phép truy cập được mã hóa, bạn nên sửa đổi cấu hình Nginx để chuyển hướng vĩnh viễn.

Mở lại file cấu hình khối server của bạn:

  • sudo nano /etc/nginx/sites-available/default

Tìm giá trị return 302 và thay đổi nó để return 301 :

/ etc / nginx / sites-available / default
server {     listen 80 default_server;     listen [::]:80 default_server;     server_name server_domain_or_IP;     return 301 https://$server_name$request_uri; }  . . . 

Lưu và đóng file .

Kiểm tra cấu hình của bạn để tìm lỗi cú pháp:

  • sudo nginx -t

Khi đã sẵn sàng , hãy khởi động lại Nginx để thực hiện chuyển hướng vĩnh viễn:

  • sudo systemctl restart nginx

Trang web bây giờ sẽ đưa ra chuyển hướng vĩnh viễn khi được truy cập qua HTTP.

Kết luận

Bạn đã cấu hình server Nginx của bạn để sử dụng mã hóa mạnh cho các kết nối client . Điều này sẽ cho phép bạn gửi các yêu cầu một cách an toàn và sẽ ngăn các bên ngoài đọc được lưu lượng truy cập của bạn.


Tags:

Các tin liên quan

Cách bảo mật Nginx bằng Let's Encrypt trên Debian 8
2016-12-19
Cách cung cấp các ứng dụng Django với uWSGI và Nginx trên Debian 8
2016-12-19
Cách tạo chuyển hướng tạm thời và vĩnh viễn với Nginx
2016-12-19
Cách thêm module gzip vào Nginx trên Ubuntu 16.04
2016-12-02
Cơ sở hạ tầng SaltStack: Tạo Salt State cho web server Nginx
2016-11-07
Cách thêm module log vào Nginx trên Ubuntu 16.04
2016-10-31
Cách thêm module log vào Nginx trên CentOS 7
2016-10-31
Cách di chuyển web root Nginx đến vị trí mới trên Ubuntu 16.04
2016-07-29
Cách cấu hình Nginx làm web server và reverse-proxy (reverse proxy) cho Apache trên một server Ubuntu 16.04
2016-07-06
Cách thiết lập server block Nginx (server ảo) trên Ubuntu 16.04
2016-05-19