1. Nginx Reverse Proxy SSL là gì?
Nginx Reverse Proxy SSL là một phương pháp sử dụng Nginx để chuyển tiếp các yêu cầu từ máy khách đến máy chủ qua SSL/TLS (Secure Sockets Layer/Transport Layer Security). Nginx Reverse Proxy SSL được sử dụng để bảo mật các kết nối truy cập từ khách hàng đến máy chủ bằng cách mã hóa các thông tin được truyền tải.
Khi sử dụng Nginx Reverse Proxy SSL, Nginx được cấu hình như một máy chủ proxy để chấp nhận các yêu cầu từ máy khách, sau đó chuyển tiếp chúng đến máy chủ SSL. Điều này giúp đảm bảo rằng các kết nối được thiết lập qua một kênh an toàn, tránh các mối đe dọa bảo mật từ bên ngoài.
Nginx Reverse Proxy SSL cũng có thể được sử dụng để cân bằng tải giữa các máy chủ, cung cấp một giải pháp đáng tin cậy và linh hoạt cho các ứng dụng web.
2. Cách cấu hình Nginx Reverse Proxy SSL?
- Cài đặt các công cụ để sử dụng chứng chỉ Let’s Encrypt bằng Certbot
sudo apt-get update \
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
Định cấu hình DNS miền của bạn để trỏ đến IP của bạn
Kiểm tra xem tên miền của bạn có đang trỏ chính xác không
$ dig +short example.com > 138.68.174.154
Chạy Certbot để tạo chứng chỉ SSL
sudo certbot --nginx certonly
Thiết lập Nginx với SSL
Cài đặt Nginx
sudo apt-get install nginx
Chuyển hướng tất cả lưu lượng truy cập sang SSL
# Open the following file sudo vim /etc/nginx/sites-enabled/default # Delete everything and add the following server { listen 80; listen [::]:80 default_server ipv6only=on; return 301 https://$host$request_uri; }
Tạo một nhóm Diffie-Hellman an toàn
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Tạo tệp cấu hình cho SSL
# Open the following file sudo vim /etc/nginx/snippets/ssl-params.conf # Paste the following from https://cipherli.st/ (follow the link for more info) ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384; ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0 ssl_session_timeout 10m; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; # Requires nginx >= 1.5.9 ssl_stapling on; # Requires nginx >= 1.3.7 ssl_stapling_verify on; # Requires nginx => 1.3.7 resolver 208.67.222.222 208.67.220.220 valid=300s; resolver_timeout 5s; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; # Paste this at the bottom of the file ssl_dhparam /etc/ssl/certs/dhparam.pem;
Định cấu hình máy chủ để sử dụng SSL
CHÚ Ý: Thay thế tất cả
example.com
bằng tên miền của bạn# Open the following file sudo vim /etc/nginx/sites-enabled/default # Paste the following bellow the existing config server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name example.com; # REPLACE HERE ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # REPLACE HERE ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # REPLACE HERE include snippets/ssl-params.conf; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_pass http://localhost:5000/; proxy_ssl_session_reuse off; proxy_set_header Host $http_host; proxy_pass_header Server; proxy_cache_bypass $http_upgrade; proxy_redirect off; } }
Kiểm tra cấu hình Nginx
$ sudo nginx -t > nginx: the configuration file /etc/nginx/nginx.conf syntax is ok > nginx: configuration file /etc/nginx/nginx.conf test is successful
Start Nginx
sudo systemctl start nginx
Cuối cùng, hãy kiểm tra ứng dụng của bạn bằng cách truy cập tên miền của bạn trên trình duyệt của bạn!
4.