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