天天看點

Nginx 隐藏版本号和資訊

Http中的Nginx版本資訊

檢視http請求的response裡面的header我們會發現有server這個參數,它表示服務端使用的是什麼web伺服器。

例如

   新浪網:

Server:nginx

  開源中國:

Server:Tengine

segmentfault甚至都沒有傳回server!

很多網站不止傳回了nginx而且還帶了版本号,而像版本号這種東西完全沒必要暴露給使用者,我們可以通過設定server_tokens off隐藏掉版本号:

Nginx 隐藏版本号和資訊

PHP中的Nginx版本資訊

即使把server_tokens設為了off,也并不代表nginx的版本号是完全不可見的~

通過上圖我們可以看到雖然http傳回的header裡面已經沒有了版本号,但是php裡面還是可以擷取到nginx的版本号的,如果要對PHP也隐藏掉版本号就需要修改fastcgi.conf這個檔案了:

去掉後面的 /$nginx_version 或者 直接注釋掉這一行!

fastcgi_paramSERVER_SOFTWARE    nginx/$nginx_version;

修改或者隐藏Nginx資訊

如果我希望nginx也不顯示呢?或者修改nginx為Tengine呢?

這個時候就要修改nginx源碼檔案src/core/nginx.h,例如我把nginx修改問tengine:

Nginx 隐藏版本号和資訊

也可以把NGINX_VER 指派為空,這樣Http 傳回的header裡面的server也為空了!

需要注意的是,如果server_tokens設定為off,即使源碼NGINX_VER 指派為空或者改成其他值,傳回的server還是nginx,隻是不顯示版本号!