Nginx服務(wù)器中配置404錯(cuò)誤頁(yè)面時(shí)一些值得注意的地方
換了VPS之后的某一天,在Google管理員工具控制臺(tái)下看到了大量的"軟404"錯(cuò)誤,查找了一些資料之后發(fā)現(xiàn)是自己在Nginx下配置404頁(yè)面的方法不對(duì)才導(dǎo)致了錯(cuò)誤的產(chǎn)生,在此記錄一下Nginx下正確的404頁(yè)面配置方法。
404是一個(gè)相應(yīng)代碼,表示"頁(yè)面無(wú)法找到"(Page Not Found),Google關(guān)于"軟404"給出的說(shuō)法是:
Instead of returning a 404 response code for a non-existent URL, websites that serve "soft 404s" return a 200 response code.
就是說(shuō)對(duì)于那些不存在的URL,服務(wù)器并沒(méi)有返回404(Page Not Found)代碼,而是返回了200(OK)代碼,而這是不正常的。
之后在其它的搜索結(jié)果里我又看到了這樣一段話
Soft 404s can occur as a result of configuration errors when an Error Document 404 is specified as an absolute path rather than a relative path.
看完之后恍然大悟,因?yàn)槲业?04自定義頁(yè)面是有圖片和CSS的,而圖片跟CSS都是以相對(duì)路徑(eg. /xxx/xxx)寫在頁(yè)面里的,所以為了能讓整站都能看到404頁(yè)面里的圖片,我就把404頁(yè)面在Nginx里定義成了絕對(duì)路徑(eg. //www.slyar.com/xxx/xxx),由于頁(yè)面被當(dāng)成了外部頁(yè)面,所以會(huì)返回200代碼,由此產(chǎn)生了"軟404"錯(cuò)誤。
知道了錯(cuò)誤,那就好辦了。將404頁(yè)面的路徑定義為相對(duì)路徑,至于圖片和CSS,只要在頁(yè)面里使用絕對(duì)路徑即可。
Nginx下正確的404頁(yè)面定義方法:
1、VIM編輯Nginx配置文件,用了vhosts的就單獨(dú)改,沒(méi)用的直接改nginx.conf
vim /usr/local/nginx/conf/nginx.conf
or
vim /usr/local/nginx/conf/vhosts/slyar.com.nginx.conf
2、以相對(duì)路徑指定404頁(yè)面
server { #error_page 404 //www.slyar.com/404.html error_page 404 /404.html; }
3、:wq保存退出,重新加載Nginx
/usr/local/nginx/sbin/nginx -s reload
4、重新檢查一下不存在的頁(yè)面,看是否返回404
curl -I //www.slyar.com/slyar HTTP/1.1 404 Not Found Server: nginx/1.0.15 Date: Mon, 27 Aug 2012 08:13:56 GMT Content-Type: text/html Content-Length: 2110 Connection: keep-alive
5.隱藏Nginx出錯(cuò)頁(yè)面及Header上的版本號(hào)
Nginx在出錯(cuò)頁(yè)面,例如403和404頁(yè)上會(huì)默認(rèn)顯示Nginx的版本號(hào),這是非常不安全的,黑客可能會(huì)通過(guò)你的Nginx版本號(hào)獲知如何入侵你的服務(wù)器,因?yàn)樘囟ò姹镜姆?wù)器程序可能會(huì)存在某些漏洞。
Nginx的版本號(hào)通常會(huì)出現(xiàn)在2個(gè)地方:
1、HTTP Header,例如 Server:nginx/1.x.x 等信息會(huì)暴露Web服務(wù)器所用軟件名稱以及版本號(hào)
2、在403和404等出錯(cuò)頁(yè)面上,默認(rèn)會(huì)顯示 Nginx 1.x.x 等版本信息
隱藏Nginx版本號(hào)非常簡(jiǎn)單,官方已經(jīng)給出了非常好的解決方案,利用server_tokens (Whether to send the Nginx version number in error pages and Server header)
打開配置文件Nginx.conf,然后在http一段中增加下面的參數(shù)
http { ...其它配置 server_tokens off; }
之后 nginx -s reload 重載Nginx配置,如此就可以隱藏掉Nginx的版本號(hào)了。可以使用curl自我測(cè)試。
相關(guān)文章
Nginx配置負(fù)載均衡時(shí)訪問(wèn)地址無(wú)法生效的解決方法
本文主要介紹了Nginx配置負(fù)載均衡時(shí)訪問(wèn)地址無(wú)法生效的解決方法,例如負(fù)載均衡策略的設(shè)置是否正確、是否存在拼寫錯(cuò)誤等,下面就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下2023-09-09Nginx服務(wù)器中配置非80端口的端口轉(zhuǎn)發(fā)方法詳解
這篇文章主要介紹了Nginx服務(wù)器中配置非80端口的端口轉(zhuǎn)發(fā)方法詳解,文中使用到了Nginx中的proxy_pass配置項(xiàng),需要的朋友可以參考下2016-04-04Centos 6.5 64位中Nginx詳細(xì)安裝部署教程
Nginx是一個(gè)web服務(wù)器也可以用來(lái)做負(fù)載均衡及反向代理使用,目前使用最多的就是負(fù)載均衡,具體簡(jiǎn)介我就不介紹了百度一下有很多,下面直接進(jìn)入安裝步驟,需要的朋友可以參考下2017-08-08使用Nginx進(jìn)行URL轉(zhuǎn)發(fā)的配置案例
Nginx是一個(gè)高性能的Web服務(wù)器和反向代理服務(wù)器,它還可以用于URL轉(zhuǎn)發(fā),在本教學(xué)文章中,我們將從安裝Nginx開始,逐步介紹配置步驟,并展示一個(gè)URL轉(zhuǎn)發(fā)的案例,感興趣的朋友可以參考下2023-09-09nginx lua集成kafka的實(shí)現(xiàn)方法
這篇文章主要介紹了nginx lua集成kafka的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Windows中將Nginx添加為服務(wù)的問(wèn)題
這篇文章主要介紹了Windows中將Nginx添加為服務(wù)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02如何使用Nginx和uwsgi在自己的服務(wù)器上部署python的flask項(xiàng)目
Nginx 是一個(gè)高性能的 HTTP 和反向代理服務(wù),其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力在同類型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好,這篇文章主要介紹了如何使用Nginx和uwsgi在自己的服務(wù)器上部署python的flask項(xiàng)目,需要的朋友可以參考下2023-11-11