我尝试将所有流量重定向到 https。我使用 AWS、passenger + NGINX。
到目前为止,我的智能手机(Android)的 Chrome 最新版本是:http://服务器名称.com重定向到 https...
在我家的电脑上,chrome 最新版本的 reddirect 也一样。但在其他电脑上,它没有 reddirect。
当然无处不在https://服务器名称.com直接访问时有效。
这是我的配置:
#user adrien;
events {
worker_connections 768;
# multi_accept on;
}
http {
passenger_root /home/ubuntu/.rvm/gems/ruby-2.3.1/gems/passenger-5.0.30;
passenger_ruby /home/ubuntu/.rvm/gems/ruby-2.3.1/wrappers/ruby;
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://bam.nr-data.net https://js-agent.newrelic.com 'unsafe-inline' 'unsafe-eval' https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net; img-src 'self' https://secure.gravatar.com https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://assets.zendesk.com; font-src 'self' https://themes.googleusercontent.com; frame-src https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; object-src 'none'";
ssl_session_cache shared:ssl_session_cache:10m;
server {
listen 80 default_server;
server_name xeralis.eu www.xeralis.eu;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name xeralis.eu www.xeralis.eu;
ssl on;
ssl_session_timeout 5m;
ssl_certificate /etc/ssl/nginx.crt;
ssl_certificate_key /etc/ssl/nginx.key;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_dhparam /etc/ssl/dhparams.pem;
resolver 8.8.8.8;
# Rails add its own headers with force_ssl: true
# add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
passenger_enabled on;
passenger_friendly_error_pages on;
rails_env development;
root /home/ubuntu/www/rails/mercipublic/public;
location /cable {
passenger_app_group_name gorails_websocket;
passenger_force_max_concurrent_requests_per_process 0;
}
location ~* ^/assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
keepalive_timeout 10;
}
}
这次会议让我在 SSL 实验室获得了“A”的评分。我该怎么做才能让我的网站在任何地方都能正常工作,http 总是重定向到 HTTPS
**编辑 http 响应标头**
演示:
警告:使用 -X/--request 将自定义 HTTP 方法设置为 HEAD 可能无法按您想要的方式工作。
请考虑改用 -I/--head。curl
:(7) 无法连接到 xeralis.eu 端口 80:连接被拒绝使用 -I:
无法连接到 xeralis.eu 端口 80:连接被拒绝
**编辑 https 响应标头 **
警告:使用 -X/--request 将自定义 HTTP 方法设置为 HEAD 可能无法
按您想要的方式工作。请考虑改用 -I/--head。HTTP
/1.1 200
OK 日期:2017 年 2 月 28 日星期二 22:36:59 GMT
内容类型:text/html;charset=utf-8
内容长度:11339 连接:保持活动
设置 Cookie:AWSALB=1AbTZpK/eslWt+5VDBK1wqKygcY30U73T36e8987HvJVTR2iE4jqD2W51m+pwEvvzd+Y9wazTTG1rrh2T0BNsNE+TDB9mD5Bl1EADEFWL9hxlHQsqOuQ6/p6qXjy; Expires=2017 年 3 月 7 日星期二 22:36:59 GMT;Path=/
状态:200 OK
Cache-Control:max-age=0,private,must-revalidate
ETag:W/“4b9c4360372ca37d2116059c2018043b”
X-Frame-Options:SAMEORIGIN
X-XSS-Protection:1;模式=block
X-Content-Type-Options:nosniff
X-Runtime:0.081279
X-Request-Id:288d1d28-b6ae-420f-9c87-9e016873c900 Set-Cookie: _mercipublic_session=aEdtcW9NRFlQSytSL1VFTmFoVlNHd0RCUXk1ZzFCaFo3ak5RUGQ0SmRocC9MVmxmd0VnNWxZem5sUDlySTUxVDlDVGFIZTRBbVFwRGwvOXpSNmhReTh6Z2d4MkpVQWhVL2Z6b GJ3UWt3U3BqRXNsMjZSUnNXOW55OEtOTk9GUzdzbERnSWJXR3c2Y2F1dUF2RmRNWlhBPT0tLWUyYWl5aWlsT3lUS2s2YXkya0JJNVE9PQ%3D%3D--e896f790c978b429d6644055f2e8c827d07657c2;路径=/;HttpOnly
X-Powered-By:Phusion Passenger 5.0.30
服务器:nginx + Phusion Passenger 5.0.30
X-Frame-Options:SAMEORIGIN
X-Content-Type-Options:nosniff
X-XSS-Protection:1;模式=block
Content-Security-Policy:default-src'self';脚本源‘self’ https://bam.nr-data.net https://js-agent.newrelic.com‘不安全内联’ ‘不安全评估’https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net; img-src‘自我’https://secure.gravatar.com https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com; 样式源‘self’‘unsafe-inline’https://fonts.googleapis.com https://assets.zendesk.com; 字体源‘自身’ https://themes.googleusercontent.com; 框架源 https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; 对象源‘无’
** 编辑 2 一半问题已解决 ** 问题来自 AWS 的 ELB。我在 443 上只有一个监听器。所以当然它阻塞了 80...
现在我要解决的最后一件事是为什么在 HTTP 和 HTTPS 都正常工作的情况下重定向不起作用
答案1
尝试这个替代块,它删除了 $host 并对要重定向到的 URL 进行硬编码。我建议你尝试这个的原因是$host 的定义
按以下优先顺序:请求行中的主机名,或“Host”请求标头字段中的主机名,或与请求匹配的服务器名称
server {
listen 80 default_server;
server_name xeralis.eu www.xeralis.eu;
return 301 https://www.xeralis.eu$request_uri;
}
如果这不起作用,请编辑您的问题以包含发生的情况的演示,包括成功和失败时的情况。“curl -X HEAD -i (URL)”通常可以做到这一点。同时显示匹配的访问日志条目。