use*_*575 16 ssl ruby-on-rails passenger nginx
我有一个与nginx上的乘客一起运行的临时rails应用程序.我想保护与SSL的连接.我已经在网上阅读了很多资源,但我还没有让它在SSL上运行.
到目前为止,我在nginx.conf上的服务器块是:
server {
listen 80;
listen 443 default deferred;
server_name example.com;
root /home/deploy/app/public;
passenger_enabled on;
passenger_set_cgi_param HTTP_X_FORWARDED_PROTO https;
ssl on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:RSA+3DES:!ADH:!AECDH:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
}
Run Code Online (Sandbox Code Playgroud)
该网站正在运行,但不在HTTPS上.
Mic*_*ook 28
我刚刚自己决定使用SSL,并在DigitalOcean网站上发现了一篇关于如何做到这一点的文章.它可能是listen 443 default deferred;,根据那篇文章应该ssl不是deferred.
这是他们使用的nginx块;
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
listen 443 ssl;
root /usr/share/nginx/html;
index index.html index.htm;
server_name your_domain.com;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
location / {
try_files $uri $uri/ =404;
}
}
Run Code Online (Sandbox Code Playgroud)
更新:
我现在有自己的网站在SSL上运行.除了上面我刚刚告诉Rails强制使用SSL.在你的生产环境配置;
# ./config/environments/production.rb
config.force_ssl = true
Run Code Online (Sandbox Code Playgroud)
或者,您可以在nginx.conf; 添加这些设置;
http {
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
keepalive_timeout 70;
}
Run Code Online (Sandbox Code Playgroud)
更新:2015-09
自从我写了这个答案以来,我在配置中添加了一些额外的东西nginx,我相信每个人都应该包括.将以下内容添加到您的server块中;
server {
ssl_prefer_server_ciphers On;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
add_header X-Frame-Options DENY;
}
Run Code Online (Sandbox Code Playgroud)
前三行(ssl_prefer_server_ciphers,ssl_protocols,ssl_ciphers)是最进口,因为他们要确保你有一个好强的SSL设置.
这X-Frame-Options可以防止您的网站被<iframe>标记包含在内.我希望大多数人都会受益于此设置.
| 归档时间: |
|
| 查看次数: |
13079 次 |
| 最近记录: |