Cách cấu hình Nginx Reverse Proxy SSL?

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?

  1. 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
  1. Định cấu hình DNS miền của bạn để trỏ đến IP của bạn

  2. 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
  3. Chạy Certbot để tạo chứng chỉ SSL

    sudo certbot --nginx certonly
Thiết lập Nginx với SSL
  1. Cài đặt Nginx

    sudo apt-get install nginx
  2. 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;
    }
  3. Tạo một nhóm Diffie-Hellman an toàn

    sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
    
  4. 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;
  5. Định cấu hình máy chủ để sử dụng SSL

    CHÚ Ý: Thay thế tất cả example.combằ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;
        }
    }
  6. 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
  7.  Start Nginx

    sudo systemctl start nginx
  8. 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.

 

0/5 (0 Reviews)

Leave a Comment