Cấu hình cơ bản SSL nginx cho website sử dụng phusion_passenger trên Centos 6
Bài đăng này đã không được cập nhật trong 10 năm
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.
Step 1: Cai dat nginx
Để 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
Step 2: Cài đặt phusion passenger
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
Step 3: Enable tính năng Passenger Nginx và khởi động nginx
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
Step 4: Cấu hình ssl cho nginx
#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;
}
Step 5: Cấu hình các tham số Passenger cho Nginx
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;
}
All rights reserved