所以我最近在我的nginx服务器上添加了使用LetsEncrypt的ssl,由于某种原因,当我尝试在Mac / iphone上以及Windows PC上使用firefox或safari时它不起作用,在chrome上可以正常工作吗?我看不到我去的地方,下面是我的网站文件,该文件位于/ etc / nginx / sites-enabled中:
server {
server_name www.domain.net;
location /static {
alias /home/user/Flask-Python-Website/website/static;
}
location / {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
proxy_redirect off;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/www.domain.net/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/www.domain.net/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.domain.net) {
return 301 $scheme://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name www.domain.net;
return 404; # managed by Certbot
}
当我在www.domain.net上尝试使用Firefox时,出现以下错误:“页面无法正确重定向” 。如果我尝试使用domain.net,则会收到 404错误。在我的iphone / mac Safari浏览器上,我对domain.net和www.domain.net都犯了同样的错误,我得到“ Safari无法打开页面,因为发生了太多的重定向” 。如果我尝试使用_- https:// 前缀,那么它们就可以工作(Safari上的https://example.com除外,因为这会显示“ __此连接不是私人”消息),我需要他们工作而不必输入https://前缀。
任何帮助将不胜感激!
答案 0 :(得分:0)
您的重定向是一个无限循环-它会将浏览器重定向到当前所在的页面(和协议):
if ($host = www.domain.net) {
return 301 $scheme://$host$request_uri;
} # managed by Certbot
此外,由于server_name
行已经指定了域“ www.domain.net”,因此无需检查主机。
您的第二个服务器块应如下所示:
server { listen 80; listen [::]:80; server_name www.domain.net; # redirect to https version of this page return 301 https://$host$request_uri; }