我们有以下安全站点。如果用户打开http://name.tld
,他应该被重定向到https://name.tld
。我们最初弄乱了安全站点中域的顺序,因此http://name.tld
被重定向到https://sub.name.tld
而不是http://name.tld
。
我们更改了服务器名称的顺序,但所有浏览器都缓存了该重定向。如果我手动禁用 Chrome 中的缓存,它就可以正常工作。但其他浏览器也需要这样做。
我们如何强制所有浏览器清除重定向缓存(首选)或禁用告诉它们不缓存重定向?我们可以发送标头吗?
这是我们的网站:
server {
listen 80;
server_name name.tld sub.name.tld localhost sub.localhost;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name name.tld sub.name.tld localhost sub.localhost;
ssl_certificate /etc/ssl/certs/fullchain.pem;
ssl_certificate_key /etc/ssl/private/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
# required for large JSON files
client_max_body_size 50m;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
root /usr/share/nginx/html/name.tld;
index index.html index.htm;
}
location /api {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://our-api:5000/api;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
编辑: 重定向的实际相关问题是 CORS。对 API 的请求失败,因为请求来自不同的域。
答案1
针对我们的情况,我们的解决方案是启用 CORS(参见上面的编辑)以接收来自 的请求https://sub.name.tld
。受影响的人至少有一个正常工作的网站,网址为https://sub.name.tld