您好,登錄后才能下訂單哦!
大部分的服務器上,我們會在一個Nginx服務下配置多個vhost,以最大化運用服務器資源。然而,為其中一個vhost域名啟用 HTTPS 之后,發現百度統計的實時訪客或入口頁中,存在一些來自其它域名的請求。即通過
https://some-other-domain.com/some-url
來訪問對應的
https://www.domain.com/some-url
結果就是 Google 瀏覽器顯示了一個安全警告頁面,認為這是一個不安全的網頁。因為我只配置了 www.domain.com 的 SSL 證書,其他域名并沒有配置。
那么,搜素引擎的爬蟲就不能正常訪問正確的域名了。
接下來筆者將給你介紹如何解決這一問題的思路和實操,
首先,我們來理一下概念:
1)理解空主機頭,正是空主機頭沒有得當配置而導致的;
2)域名=>IP=>端口=>服務;
nginx既是一個高性能高并發的Web服務器,同時也是做反向代理的優選工具, 當我們部署該工具時,默認配置(nginx.conf)中的server塊,在不指定server_name的情況下,可以匹配任意指向該服務器的域名,即,只要你將域名做A記錄指向該服務器的IP或Cname,便可“克隆”該服務器上的defalut_server。
我們知道nginx中的vhost是依賴server_name來路由的,但,端口也可起到相同的作用。
因此,當我們為vhost配置了https后,非該vhost綁定的server_name(假設為: some-other-domain.com),通過https協議進行被訪問時,由于空主機頭并未能設置,因此,也就無法攔截,這時some-other-domain.com被看作為IP使用,請求將轉發到 當前服務器IP:443,監聽443的default_server(www.domain.com) 自然就返回了內容。
搞清概念上的問題就好辦了,配置空主機頭即可,讓沒有明確綁定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,現在再多的vhost啟用https也不怕亂跳了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。