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; }