Nginx

在 NGINX 配置文件中限制伺服器方法的數量

  • January 30, 2019

我正在嘗試將所有非 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 上。

我只想刪除第 3 個伺服器 {} 部分,並將 www.example.com 添加到第一個伺服器 {} 。所以第一個 server_name 行變成:

server_name example.com www.example.com;

返回 301 <https://www.example.com> $request_uri;

沒有理由進行如此多的重定向。

或者在第二個 server{} 部分的 server_name 中列出 example.com,或者使用必要的 ssl 配置為埠 443 添加一個新的 server{} 部分,其中包含 server_name=example.com,然後重定向到https://www.example .com

引用自:https://serverfault.com/questions/951495