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 8 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