Linux · NodeJS

Letsencrypt Ubuntu 14 Ngnix Nodejs

Step 1: Mở ssh cho server

sudo ufw allow ssh

sudo ufw allow 22

Step 2: Mở port 80 cho http và 443 cho https

sudo ufw allow 80

sudo ufw allow http

sudo ufw allow 443

sudo ufw allow https

Step 3 (optional):

Nếu dùng lệnh

sudo ufw status verbose

mà nó hiện là  status : inactive

thì ta phải enable nó lên

sudo ufw enable

Step 4:  Cài Nginx

Sudo apt-get install nginx

Step 5: chỉnh sửa cấu hình nginx

Sudo vim /etc/nginx/sites-available/default

ta chỉnh thông tin như sau:

server {
     listen 80;
     server_name example.com
     location ~ /.well-known {
         allow all;
     }
}

server {
     listen 80;
     server_name www.example.com
     location ~ /.well-known {
          allow all;
     }
}

Sau đó saveexit

  • Lưu ý: Nếu muốn add ssl cho subdomain thì ta vẫn làm them code cấu hình như thế

Tiếp tục gõ lệnh để kiểm tra những ta chỉnh sửa có đúng với với cấu trúc nginx hay không ?

sudo nginx –t

Sau đó restart nginx lại

Sudo service nginx restart

Step 5: Cài đặt Letsencrypt

Trước tiến clone letsencrypt

Git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt

Step 6: Tạo file ssl

./letsencrypt-auto certonly --webroot --webroot-path /usr/share/nginx/html --renew-by-default --email example@example.com --text --agree-tos -d www.example.com -d example.com
  • Lưu ý: nếu muốn them subdomain thì ta chỉ cần thêm tham số
    -d www.subdomain –d subdomain.com

Sau đó, nó sẽ xuất ra màn hình như sau

Setp 7: Chỉnh sửa file nginx như sau:

Gõ lệnh :

Sudo vim /etc/nginx/sites-available/default
#Redirect to https
server {        
    listen 80;        
    server_name your_domain_name;        
    return 301 https://$host$request_uri;
} 

#Redirect to Https and remove www
server {        
     listen 80;        
     server_name www.your_domain_name;        
     return 301 https://your_domain_name$request_uri;
} 

# HTTPS - proxy requests on to local Node.js app:
server {        
     listen 443;        
     server_name your_domain_name;         
     ssl on;        
     # Use certificate and key provided by Let's Encrypt:        
     ssl_certificate /etc/letsencrypt/live/your_domain_name/fullchain.pem;        
     ssl_certificate_key /etc/letsencrypt/live/your_domain_name/privkey.pem;        
     ssl_session_timeout 5m;        
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;        
     ssl_prefer_server_ciphers on;        
     ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';         
     # Pass requests for / to localhost:8080:        
     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_pass http://localhost:8080/;                
        proxy_ssl_session_reuse off;                
        proxy_set_header Host $http_host;                
        proxy_cache_bypass $http_upgrade;                
        proxy_redirect off;        
       }
}

Lưu ý: Nếu muốn Nginx hỗ trợ websocket thì thêm vào như sau:

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

Sau đó gõ lệnh kiểm tra cú pháp:

Sudo nginx –t

Gõ lệnh restart:

Sudo service nginx restart
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s