所以我已經運行 nginx 伺服器一段時間了,我做了很多更改以使其適合我的一個客戶。他們最近僱用了滲透測試人員,並希望我加強安全性。因此我需要隱藏 nginx 的建置名稱來滿足他們的要求。不過,我似乎需要重新編譯 nginx 才能做到這一點。我只是想知道在使用建置名稱選項重新編譯時是否有一種方法可以保留對配置等的所有變更。
答案1
重建 nginx 時,您的設定不會改變。如果make install
偵測到現有配置,它不會覆蓋它們。為了完全確定,只需複製nginx.conf
或nginx.conf.bak
類似即可。然而,聽起來您需要配置管理和某種建置流程,這將為您的安全審核帶來額外的分數。我會考慮至少git
為您的配置設定一個本機儲存庫,並可能travis
或jenkins
管理版本,因為您需要隨時掌握新的安全性更新。
對於到達此處的任何搜索,nginx 版本是在編譯時由變數設定的NGINX_VER
,但不要全域更改它,因為其他進程使用它。該變數需要在ngx_http_header_filter_module.c
以下位置手動更改:
static u_char ngx_http_server_string[] = "Server: yourservername" CRLF;
static u_char ngx_http_server_full_string[] = "Server: yourservername/1.0" CRLF;
static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF;
答案2
我從這個評論中得到了我需要的答案:https://stackoverflow.com/questions/24594971/how-to-changehide-the-nginx-server-signature/38967105#38967105
如果你在 ubuntu 下工作的話
首先安裝 nginx-extras
sudo apt-get install nginx-extras
到 /etc/nginx/nginx.conf 並在 http 下新增:
http {
more_set_headers "Server: Your_New_Server_Name";
server_tokens off;
}
重啟nginx
sudo service nginx restart