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 上。
我只想刪除第 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