Nginx如何將HTTP重定向到HTTPS
Nginx,發(fā)音為“Engine x”,是一個(gè)免費(fèi)、開源、基于Linux的高性能Web和反向代理服務(wù)器,負(fù)責(zé)管理和處理互聯(lián)網(wǎng)上最大的網(wǎng)站流量的負(fù)載。Nginx是一個(gè)強(qiáng)大的重定向工具,可以輕松配置在您的系統(tǒng)上重定向不安全或未加密的HTTP網(wǎng)絡(luò)流量到加密和安全的HTTPS網(wǎng)絡(luò)服務(wù)器。如果你是一個(gè)系統(tǒng)管理員或開發(fā)人員,那么你應(yīng)該經(jīng)常使用Nginx服務(wù)器。
在這篇文章中,我們將研究如何在Nginx中將Web流量從HTTP重定向到安全的HTTPS。HTTP消息頭,以明文的字符串格式傳送,而HTTPS使用SSL/TLS對(duì)客戶機(jī)和服務(wù)器系統(tǒng)之間的通信進(jìn)行加密。因此,由于許多原因,HTTPS應(yīng)該替代HTTP:
- 客戶端-服務(wù)器之間雙向的所有數(shù)據(jù)均已加密。但是,如果被攔截,任何人都無法訪問敏感信息。
- 當(dāng)您使用HTTPS時(shí),Google Chrome和其他瀏覽器會(huì)認(rèn)為您的網(wǎng)站域是安全的。
- HTTPS版本使用HTTP/2協(xié)議改善了您指定的網(wǎng)站性能。
- 如果您通過HTTPS為您的網(wǎng)站域提供服務(wù),則該網(wǎng)站將在Google上排名更高,因?yàn)樗珢鬯惺蹾TTPS保護(hù)的網(wǎng)站。
- 對(duì)于每個(gè)站點(diǎn)版本,最好在單獨(dú)的服務(wù)器塊中將Nginx中的流量HTTP重定向到HTTPS。還建議避免使用“ if”方向重定向流量,這可能會(huì)導(dǎo)致服務(wù)器異常行為。
將所有流量從HTTP重定向到HTTPS
將以下更改添加到Nginx配置文件中,以便將所有流量從HTTP重定向到HTTPS版本:
- server {
- listen 80 default_server;
- server_name _;
- return 301 https://$host$request_uri;
- }
下面,我們?cè)敿?xì)說明每個(gè)上述術(shù)語:
- Listen 80 default_server - 這將指示您的系統(tǒng)捕獲端口80上的所有HTTP通信
- Server_name _ - 在接到請(qǐng)求后的匹配順序
- Return 301 https://$host$request_uri - 這告訴您的搜索引擎將其永久重定向。它指定變量$host 保存域名。
更改配置設(shè)置后,需要在系統(tǒng)上重新加載Nginx服務(wù)。因此,使用以下命令重新加載Nginx服務(wù):
- $ sudo systemctl reload nginx
在Nginx中將指定域名的HTTP重定向到HTTPS
在您的域上安裝SSL證書之后,您將有兩個(gè)用于此域名的服務(wù)器塊選項(xiàng)。一個(gè)塊用于監(jiān)聽端口80的HTTP版本,第二個(gè)版本用于監(jiān)聽端口443的HTTPS。然而,要將一個(gè)網(wǎng)站域名從HTTP重定向到HTTPS,你需要打開Nginx配置。您可以在/etc/nginx/sites-available目錄中找到這個(gè)配置文件。如果你沒有找到這個(gè)文件,你可以搜索它/etc/nginx/nginx./usr/local/nginx/conf或/usr/local/etc/nginx,然后在這個(gè)文件中執(zhí)行以下更改:
- server {
- listen 80;
- server_name linuxmi.com www.linuxmi.com;
- return 301 https://linuxmi.com$request_uri;
- }
讓我們逐行了解上面的代碼。
- Listen 80 - 使用端口80,服務(wù)器將偵聽指定域名的所有傳入連接。
- Server_name linuxmi.com www.linuxmi.com - 它指定域名。因此,將其替換為您要重定向的網(wǎng)站域名。
- Return 301 https://linuxmi.com$request_uri - 將流量移至該站點(diǎn)的HTTPS版本。
- $request_uri變量用于完整的原始請(qǐng)求URI,其中也包含參數(shù)。
使用以下方法,您可以將流量重定向到HTTPS www版本到站點(diǎn)的非www版本。對(duì)于非www和www版本,建議在單獨(dú)的服務(wù)器塊中創(chuàng)建重定向。讓我們用一個(gè)例子來解釋。如果要將www HTTPS請(qǐng)求重定向到非www版本,則應(yīng)遵循以下配置:
- server {
- listen 80;
- server_name linuxmi.com www.linuxmi.com;
- return 301 https://linuxmi.com$request_uri;
- }
- server {
- listen 443 ssl http2;
- server_name www.linuxmi.com;
- # . . . other code
- return 301 https://linuxmi.com$request_uri;
- }
- server {
- listen 443 ssl http2;
- server_name linuxmi.com;
- # . . . other code
- }
用您的域名替換域名,例如www.linuxmi.com。
總結(jié)
我們已經(jīng)討論了如何將流量從HTTP版本重定向到Nginx服務(wù)器上的HTTPS。通過改變Nginx配置文件設(shè)置,您可以輕松地將指定域名或全部重定向到HTTPS。我們?cè)诒疚闹刑岬降倪@種方法,可以通過改變用戶體驗(yàn),使您的網(wǎng)站更安全。