Nginx 屏蔽服務器名稱與版本信息(源碼級修改)
一、背景與目的
在生產環境部署 Nginx 時,默認配置會在 Server
響應頭中暴露服務類型(如 nginx
)和版本號(如 nginx/1.25.4
)。這些信息可能被攻擊者利用來針對性發起攻擊,因此需通過源碼修改徹底屏蔽,確保 Server
頭不包含任何服務標識。
二、適用版本
本文以 Nginx 1.25.4 為例,其他版本(如 1.23.x、1.24.x)操作流程類似。
三、操作步驟
修改源碼文件
-
進入 Nginx 源碼目錄(假設已下載并解壓
nginx-1.25.4.tar.gz
):cd nginx-1.25.4
-
打開定義服務器標識的核心文件:
vi src/http/ngx_http_header_filter_module.c
-
找到以下原代碼行(定義
Server
頭信息):static u_char ngx_http_server_string[] = "Server: nginx" CRLF; static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF; static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF;
-
修改為以下內容(移除所有服務類型和版本信息):
static u_char ngx_http_server_string[] = "Server:" CRLF; static u_char ngx_http_server_full_string[] = "Server: " CRLF; static u_char ngx_http_server_build_string[] = "Server: " CRLF;
-
保存文件并退出編輯器(
vi
中按ESC
后輸入:wq
回車)。
四、后續操作提示
修改源碼后,需繼續執行配置、編譯、安裝等步驟使修改生效,具體可參考:
- 配置編譯選項(如啟用 SSL 模塊等)
- 執行
make
編譯 - 執行
make install
安裝 - 啟動 Nginx 并驗證
Server
頭是否已屏蔽
五、注意事項
- 升級 Nginx 時需重新修改源碼,否則會恢復默認標識。
- 該修改不影響 Nginx 功能,僅屏蔽對外暴露的服務信息。