12/08/2018, 14:03

Cấu hình cơ bản SSL nginx cho website sử dụng phusion_passenger trên Centos 6

Trong bài hướng dẫn này chúng ta sẽ cấu hình SSL nginx cho website viết bằng ruby, sử dụng phusion_passenger. Để cài đặt nginx từ repository, tạo file /etc/yum.repos.d/nginx.repo với nội dung: [nginx] name=nginx repo baseurl=http://ngin> x.org/packages/mainline/OS/OSRELEASE/$basearch/ gpgch ...

Trong bài hướng dẫn này chúng ta sẽ cấu hình SSL nginx cho website viết bằng ruby, sử dụng phusion_passenger.

Để cài đặt nginx từ repository, tạo file /etc/yum.repos.d/nginx.repo với nội dung:

[nginx]
name=nginx repo
baseurl=http://ngin> x.org/packages/mainline/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1

Thay thế "OS" với "centos" và "OSRELEASE" với "6" Cài đặt nginx: $ yum install -y nginx

Start nginx: $ service nginx start

Phusion passenger yêu cầu kernel 2.6.39 trở lên và phải disable SELinux.

Enable EPEL

$ if ! rpm -q epel-release; then sudo yum install -y yum-utils http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm; fi

$ sudo yum-config-manager --enable epel

$ sudo yum install -y epel-release yum-utils

$ sudo yum-config-manager --enable epel

Cài đặt Phusion Passenger

sudo yum install -y pygpgme curl

sudo curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo

sudo yum install -y passenger

Sửa file /etc/nginx/conf.d/passenger.conf:

passenger_root /some-filename/locations.ini;
passenger_ruby /usr/bin/ruby;
passenger_instance_registry_dir /var/run/passenger-instreg;

Khởi động lại nginx:

$ sudo service nginx restart

#Lắng nghe các request từ port 443 và enable SSL cho website
listen 443 ssl;
server_name _;

#Khai báo vị trí file crt và private key ( signed certificate ) của chứng chỉ SSL
ssl_certificate /etc/ssl/certs/test.crt;
ssl_certificate_key /etc/ssl/private/test.key;

#Khai báo đường dẫn đến thư mục ứng dụng
root /usr/local/rails_apps/testlab/current/public;

#Giới hạn kích cỡ tối đa của một truy vấn gửi dữ liệu lên Server của client là 10M
client_max_body_size 10M;

#Khai báo vị trí ghi error log và access log của web server
error_log /var/log/nginx/apply.test.net.https_error.log ;
access_log /var/log/nginx/apply.test.net.https_access.log;

#Disable giao thức SSLv2 và SSLv3, chỉ sử dụng giao thức TLSv1, TLSv1.1 và TLSv1.2
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

#Khai báo server key
ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS";

#Ưu tiên sử dụng mã hóa của server khi sử dụng giao thức SSLv3 và TLS
ssl_prefer_server_ciphers on;

#Mở tính năng check SSL theo thời gian thực và Enable xác thực giữa các gói tin request va response trong giao thức OCSP.
ssl_stapling on;
ssl_stapling_verify on;

#HSTS (ngx_http_headers_module is required) (31536000 seconds = 2 years)
add_header Strict-Transport-Security "max-age=31536000; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
}
location / {
	try_files $uri @webapp;
	passenger_set_header Upgrade $http_upgrade;
	passenger_set_header Connection "Upgrade";
	add_header Upgrade $http_upgrade;
	add_header Connection "Upgrade";
}
location "@webapp" {
	proxy_redirect     off;
	proxy_set_header   Host             $host;
	proxy_set_header   X-Real-IP        $remote_addr;
	proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    #Khai báo khoảng thời gian tối đa để tiếp nhận một tin phản hồi từ proxy server.
	proxy_read_timeout 10000;
    #Bổ sung thêm header Upgrade để đẩy qua ứng dụng web.
	passenger_set_header Upgrade $http_upgrade;
	passenger_set_header Connection "Upgrade";
	add_header Upgrade $http_upgrade;
	add_header Connection "Upgrade";
                }
    passenger_set_header Upgrade $http_upgrade;
    passenger_set_header Connection "Upgrade";
    #Khởi chạy Passenger
    passenger_enabled on;
    #Khai báo thư mục cài đặt plugin ruby
    passenger_ruby /home/deploy/.rvm/gems/ruby-2.3.1/wrappers/ruby;
#Bật tính năng hiển thị trạng thái hoạt động của nginx
location /nginx_status
    {
    #Tắt tính năng xác thực khi access
    auth_basic off;
    #Hiển thị tình trạng kết nối đến nginx
    stub_status on;
    #Tắt ghi log access
    access_log   off;
    }
0