しばらくの間、nginx サーバーを運用してきましたが、クライアントの 1 社にふさわしいように、多くの変更を加えました。最近、クライアントは侵入テスト担当者を雇用し、セキュリティを強化してほしいと言っています。そのため、クライアントの要件を満たすには、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