溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

關(guān)于Nginx配置Https server后,亂跳的問題解決記錄

發(fā)布時間:2020-07-15 18:34:34 來源:網(wǎng)絡(luò) 閱讀:840 作者:kennyluo 欄目:系統(tǒng)運維

大部分的服務(wù)器上,我們會在一個Nginx服務(wù)下配置多個vhost,以最大化運用服務(wù)器資源。然而,為其中一個vhost域名啟用 HTTPS 之后,發(fā)現(xiàn)百度統(tǒng)計的實時訪客或入口頁中,存在一些來自其它域名的請求。即通過

https://some-other-domain.com/some-url

來訪問對應(yīng)的

https://www.domain.com/some-url

結(jié)果就是 Google 瀏覽器顯示了一個安全警告頁面,認為這是一個不安全的網(wǎng)頁。因為我只配置了 www.domain.com 的 SSL 證書,其他域名并沒有配置。

那么,搜素引擎的爬蟲就不能正常訪問正確的域名了。

接下來筆者將給你介紹如何解決這一問題的思路和實操,

首先,我們來理一下概念:
1)理解空主機頭,正是空主機頭沒有得當配置而導(dǎo)致的;
2)域名=>IP=>端口=>服務(wù);

nginx既是一個高性能高并發(fā)的Web服務(wù)器,同時也是做反向代理的優(yōu)選工具, 當我們部署該工具時,默認配置(nginx.conf)中的server塊,在不指定server_name的情況下,可以匹配任意指向該服務(wù)器的域名,即,只要你將域名做A記錄指向該服務(wù)器的IP或Cname,便可“克隆”該服務(wù)器上的defalut_server。
我們知道nginx中的vhost是依賴server_name來路由的,但,端口也可起到相同的作用。
因此,當我們?yōu)関host配置了https后,非該vhost綁定的server_name(假設(shè)為: some-other-domain.com),通過https協(xié)議進行被訪問時,由于空主機頭并未能設(shè)置,因此,也就無法攔截,這時some-other-domain.com被看作為IP使用,請求將轉(zhuǎn)發(fā)到 當前服務(wù)器IP:443,監(jiān)聽443的default_server(www.domain.com) 自然就返回了內(nèi)容。

搞清概念上的問題就好辦了,配置空主機頭即可,讓沒有明確綁定server_name的域名,一律攔截。

具體配置如下:

打開 /usr/local/nginx/conf/nginx.conf 配置文件,修改或添加默認vhost
server {

listen 80 default_server;
listen 443 ssl http2;
servername ;
server_name_in_redirect off;
ssl_certificate /path/ssl_cert/ssl.pem;
ssl_certificate_key /path/ssl_cert/ssl.key;
error_page 401 402 403 404 /40x.html;

location = /40x.html {
root html;
}

location / {
return 404;
}
}

OK,現(xiàn)在再多的vhost啟用https也不怕亂跳了。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI