在CentOS?7上使用Nginx將www重定向到非www的完整步驟
簡介
許多網(wǎng)站開發(fā)者需要允許用戶通過 www 子域名和根域名(非 www)訪問他們的網(wǎng)站或應用程序。也就是說,用戶在訪問 www.my-website.com
和 my-website.com
時應該有相同的體驗。雖然有許多設置方法,但最有利于搜索引擎優(yōu)化(SEO)的解決方案是選擇您喜歡的域名(子域名或根域名),并讓 Web 服務器將訪問另一個域名的用戶重定向到首選域名。
有許多種類型的 HTTP 重定向,但在這種情況下,最好使用 301 重定向,它告訴客戶端:“您請求的網(wǎng)站已永久移動到另一個 URL,請前往那里。” 一旦瀏覽器從服務器接收到 HTTP 301 響應代碼,它會向服務器發(fā)送第二個請求,然后用戶將看到網(wǎng)站,可能根本沒有注意到它們被重定向了。
為什么不配置您的 Web 服務器只為兩個域名的請求提供相同的網(wǎng)站呢?這可能看起來更容易,但它不具備 301 重定向的 SEO 優(yōu)勢。永久重定向告訴搜索引擎爬蟲您的網(wǎng)站有一個規(guī)范位置,并提高了該 URL 的搜索排名。
在本教程中,您將在 CentOS 7 上使用 Nginx 配置 301 重定向。如果您使用的是 Apache 而不是 Nginx,請參閱此教程:如何在 CentOS 7 上使用 Apache 將 www 重定向到非 www。
先決條件
要完成本教程,您首先需要:
- 在運行 Nginx 的服務器上擁有超級用戶權(quán)限(
wheel
組中的用戶)。如果您尚未設置,請按照此教程進行:在 CentOS 7 上進行初始服務器設置。 - 已安裝并配置 Nginx 以提供您的網(wǎng)站。請按照此教程進行:如何在 CentOS 7 上安裝 Nginx。
- 注冊的域名。如果您尚未擁有域名,可以從 Freenom 獲取免費域名。您可以使用任何您喜歡的 DNS 提供商(包括您的注冊商)來托管您的域名記錄,只需確保將注冊商指向您的提供商的域名服務器。如果選擇使用 DigitalOcean DNS,我們的文檔中的文章展示了如何操作。
讓我們開始配置您的 DNS 記錄。
步驟 1 — 配置 DNS 記錄
首先,您需要將 www.my-website.com
和 my-website.com
指向運行 Nginx 的服務器。 (本教程假定您的域名是 my-website.com
。在下面看到該域名時,請用您自己的域名替換它。)您可以通過為每個名稱創(chuàng)建一個 DNS A 記錄來實現(xiàn)這一點,該記錄指向您的 Nginx 服務器的 IP 地址。
打開您的 DNS 提供商的 Web 控制臺。本教程使用 DigitalOcean DNS。
在“添加域名”表單中,輸入您注冊的域名并單擊“添加域名”。這將打開新域名的頁面,在該頁面上,您可以查看、添加和刪除該域名的記錄。
在“創(chuàng)建新記錄”下,將“@”輸入到“主機名”文本字段中。這是一個特殊字符,表示您正在為根域名添加記錄,即僅為 my-website.com
添加記錄。在“將指向”文本字段中,輸入服務器的公共 IPv4 地址,然后單擊“創(chuàng)建記錄”(無需更改 TTL)。
對于第二個 DNS 記錄,您可以使用 CNAME 記錄而不是 A 記錄。CNAME 記錄是指向另一個名稱而不是 IP 地址的別名。您可以創(chuàng)建一個 CNAME 記錄,將 www.my-website.com
指向 my-website.com
,并且任何對 www 子域的 HTTP 請求都會找到您的服務器,因為您剛剛為根域名創(chuàng)建了 A 記錄。但為了簡單起見,只需創(chuàng)建另一個與第一個類似的 A 記錄,將“www”輸入到“主機名”字段中,將服務器的公共 IP 地址輸入到“將指向”字段中。
創(chuàng)建完兩個記錄后,應該看起來像這樣:
!必需的 A 記錄
放置了這兩個記錄后,對 my-website.com
和 www.my-website.com
的 Web 請求應該能夠到達您的 Nginx 服務器?,F(xiàn)在讓我們配置服務器。
步驟 2 — 在 Nginx 中配置重定向
如先決條件中所述,您應該已經(jīng)在 Nginx 中配置了您的網(wǎng)站。站點的 server
塊出現(xiàn)在主 /etc/nginx/nginx.conf
文件中或者在自己的文件中都無所謂。重要的是您已經(jīng)配置了一些 server
塊,并且其中的 server_name
指令設置為 my-website.com
和/或 www.my-website.com
。無論您的 server_name
包含一個還是兩個名稱,現(xiàn)在是決定哪個名稱您想要成為唯一托管站點的名稱。
打開包含您的網(wǎng)站配置的文件(例如 /etc/nginx/conf.d/my-website.com.conf
)在 vi
或您喜歡的編輯器中(如果您更喜歡,可以使用 yum install nano
),并找到 server_name
指令:
sudo vi /etc/nginx/conf.d/my-website.com.conf
server { . . . server_name my-website.com www.my-website.com . . . }
如果您想要將 www.my-website.com
重定向到 my-website.com
,請從 server_name
行中刪除 www.my-website.com
,然后保存并退出文件。(如果您想要將 my-website.com
重定向到 www.my-website.com
,請刪除 my-website.com
。)
然后,創(chuàng)建一個名為 /etc/nginx/conf.d/www.my-website.com.conf
(或 /etc/nginx/conf.d/my-website.com.conf
,如果您要重定向的名稱是這個)的新的 Nginx 配置文件。文件名可以隨意命名,但與所有 Nginx 配置文件一樣,文件名必須以 .conf
結(jié)尾:
sudo vi /etc/nginx/conf.d/www.my-website.com.conf
在文件中添加以下 server
塊,將 my-website.com
替換為您自己的域名:
server { server_name www.my-website.com; return 301 $scheme://my-website.com$request_uri; }
如果您要將 my-website.com
重定向到 www 子域,只需在 server_name
中僅放入 my-website.com
,并在下一行的 URL 中放入 www.my-website.com
。
完成后保存并退出。
在應用更改之前,檢查您的 Nginx 配置是否沒有錯誤:
sudo nginx -t
除非您出現(xiàn)了語法錯誤(例如,您忘記了一個分號),否則配置應該是正確的。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
現(xiàn)在重新啟動 Nginx 以應用新的重定向規(guī)則:
sudo systemctl restart nginx
在瀏覽器中訪問 www.my-website.com
之前,可以在服務器上或本地機器上(如果本地安裝了 curl
)使用 curl
進行請求:
curl -IL http://www.my-website.com
-I
標志告訴 curl
僅顯示來自服務器響應的標頭。-L
標志告訴 curl
遵循服務器的任何重定向,通過自動發(fā)出第二個請求,這次請求的 URL 是在 Location
標頭中給出的 URL(就像 Web 瀏覽器會做的那樣)。由于您已配置了 301 重定向,curl
應該會發(fā)出兩個請求,您應該只會看到兩個響應的標頭:
HTTP/1.1 301 Moved Permanently Server: nginx/1.20.1 Date: Thu, 08 Dec 2022 19:24:44 GMT Content-Type: text/html Content-Length: 169 Connection: keep-alive Location: http://my-website.com HTTP/1.1 200 OK Server: nginx/1.20.1 Date: Thu, 08 Dec 2022 19:24:44 GMT Content-Type: text/html Content-Length: 57 Last-Modified: Thu, 01 Dec 2022 22:10:57 GMT Connection: keep-alive ETag: "63892671-39" Accept-Ranges: bytes
在對 http://www.my-website.com
的原始請求的 301(永久移動)響應中,請注意最后一個標頭:Location: http://my-website.com
。第二個響應來自 curl
對 http://my-website.com
的后續(xù)請求,如果您的網(wǎng)站正常,服務器應該已經(jīng)以 200(OK) 響應。
最后,在您的 Web 瀏覽器中訪問 http://www.my-website.com
。眨眼之間,您可能錯過了重定向。您的網(wǎng)站應該會像往常一樣顯示,但再次查看地址欄,注意到 URL 中缺少“www”。大多數(shù)用戶都不會注意到這一點,因此他們將會像請求 http://my-website.com
一樣有相同的體驗。
結(jié)論
在本教程中,您為您的網(wǎng)站添加了兩個 DNS 記錄,并配置了 Nginx 將次要域重定向到首選域?,F(xiàn)在您的網(wǎng)站可以通過這兩個域名訪問。也許在您閱讀本教程之前,您的網(wǎng)站已經(jīng)可以通過這兩個域名直接訪問。但是通過只需再添加四行 Nginx 配置,您已經(jīng)提高了您的網(wǎng)站在搜索引擎中的地位,從而使其暴露在互聯(lián)網(wǎng)上的更多用戶面前。
想進一步了解 Nginx 如何決定哪個 server
塊將處理特定請求嗎?請查閱本指南:理解 Nginx 服務器和位置塊選擇算法。
總結(jié)
到此這篇關于在CentOS 7上使用Nginx將www重定向到非www的文章就介紹到這了,更多相關CentOS7 Nginx將www重定向非www內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Nginx性能優(yōu)化之Gzip壓縮設置詳解(最大程度提高頁面打開速度)
這篇文章主要介紹了Nginx性能優(yōu)化之Gzip壓縮設置詳解(最大程度提高頁面打開速度),需要的朋友可以參考下2022-01-01詳解nginx實現(xiàn)ssl反向代理實戰(zhàn)
本篇文章主要介紹了nginx實現(xiàn)ssl反向代理實戰(zhàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01Nginx開啟一個參數(shù)就能讓你的WEB性能提升3倍的方法
這篇文章主要介紹了Nginx開啟一個參數(shù)就能讓你的WEB性能提升3倍的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03Nginx+cpolar實現(xiàn)內(nèi)網(wǎng)穿透多個Windows Web站點端口的步驟詳解
這篇文章主要給大家介紹了Nginx+cpolar實現(xiàn)內(nèi)網(wǎng)穿透多個Windows Web站點端口的詳細步驟,文章通過圖文介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2023-10-10解讀nginx反向代理location和proxy_pass的映射關系
這篇文章主要介紹了解讀nginx反向代理location和proxy_pass的映射關系,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01