限制 NGINX 配置文件中的服务器方法数量

限制 NGINX 配置文件中的服务器方法数量

我正在尝试强制将所有非 www 和非 https 请求重定向到https://www.example.com网站的版本。这是一个新网站,因此重定向不会对 SEO 产生影响。我正在尝试遵循此处的 NGINX 文档:http://nginx.org/en/docs/http/converting_rewrite_rules.html但是在这和 certbot 添加的内容之间,我最终有点困惑,并担心多次重定向的影响。

这是我当前的服务器配置文件:

server {
        listen 80;
        server_name example.com;
        # $scheme will get the http protocol
        # and 301 is best practice for tablet, phone, desktop and seo
        return 301 $scheme://www.example.com$request_uri;
}

server {
        server_name www.example.com;
        passenger_enabled on;
        rails_env    production;
        root         /home/deploy/example_app/current/public;

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

            listen [::]:443 ssl ipv6only=on; # managed by Certbot
            listen 443 ssl; # managed by Certbot
            ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
            ssl_certificate_key /etc/letsencrypt/live/example.com/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.example.com) {
        return 301 https://$host$request_uri;
    }


    if ($host = example.com) {
        return 301 https://$host$request_uri;
    }


        listen 80;
        listen [::]:80 ipv6only=on;

        server_name www.example.com example.com;
    return 404;

}

这样可以吗?或者我以某种方式整合它会更有效率吗?nginx 文档指出这样做这是一种错误的、繁琐的、无效的方法。但我对它的当前版本感到不满意。

如果重要的话,它将作为 Ruby on Rails 网站运行,托管在 VPS 上的 Phusion Passenger + NGINX 上。

答案1

我只需删除第三个 server {} 部分,并将 www.example.com 添加到第一个 server {} 。因此,第一行的 server_name 变为:

服务器名称 example.com www.example.com;

返回 301https://www.example.com$请求uri;
没有理由进行如此多的重定向。

然后在第二个 server{} 部分的 server_name 中列出 example.com,或者为端口 443 添加一个新的 server{} 部分,其中包含必要的 ssl 配置,其中 server_name=example.com,然后重定向到https://www.example.com

相关内容