Nginx服务器无法在Firefox和Safari上加载

时间:2019-06-04 14:48:19

标签: nginx

所以我最近在我的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://前缀。

任何帮助将不胜感激!

1 个答案:

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