153

バージョンを非表示にしてnginxのみを表示するオプションがありますが、それも非表示にして何も表示したりヘッダーを変更したりしないようにする方法はありますか?

4

14 に答える 14

159

Server:nginx を使用してバックエンド アプリケーションをプロキシし、バックエンドがnginx で上書きせずに独自のヘッダーをアドバタイズするようにしたい場合は、server {…}スタンザ内に移動して次のように設定できます。

proxy_pass_header Server;

これにより、nginx はそのヘッダーをそのままにして、バックエンドによって設定された値を書き換えないようになります。

于 2012-02-12T22:08:16.647 に答える
60

Apache と同様に、これはソースを編集して再コンパイルするだけです。Calomel.orgから:

Server: 文字列は、実行している http サーバーのタイプと、場合によってはバージョンをクライアントに通知するためにクライアントに送り返されるヘッダーです。この文字列は、Alexia や Netcraft などの場所で、インターネット上で稼動している Web サーバーの数と種類に関する統計を収集するために使用されます。Nginx の作成者と統計をサポートするために、この文字列をそのままにしておくことをお勧めします。ただし、セキュリティのために、実行しているものを他の人に知られたくない場合は、ソース コードでこれを変更できます。ソース ファイルの src/http/ngx_http_header_filter_module.c 48 行目と 49 行目を編集します。文字列は好きなように変更できます。

## vi src/http/ngx_http_header_filter_module.c (lines 48 and 49)
static char ngx_http_server_string[] = "Server: MyDomain.com" CRLF;
static char ngx_http_server_full_string[] = "Server: MyDomain.com" CRLF;

2011 年 3 月の編集: Nginx の標準HttpHeadersModuleをフォークされたHttpHeadersMoreModuleに置き換える新しいオプションを指摘するために、以下の Flavius に提案します。標準モジュールを再コンパイルすることは依然として迅速な解決策であり、標準モジュールを使用する必要があり、サーバー文字列を頻繁に変更しない場合には理にかなっています。しかし、それ以上のことが必要な場合、HttpHeadersMoreModule は強力なプロジェクトであり、HTTP ヘッダーを使用してあらゆる種類のランタイム ブラック マジックを実行できます。

于 2008-10-29T10:04:42.693 に答える
36

シンプルに、/etc/nginx/nginx.conf を編集してコメントを削除します

#server_tokens off;

httpセクションを検索します。

于 2011-11-15T15:51:54.090 に答える
25

特別なモジュールがあります: http://wiki.nginx.org/NginxHttpHeadersMoreModule

このモジュールを使用すると、指定した出力または入力ヘッダーを追加、設定、またはクリアできます。

これは、 、、 などの「組み込みヘッダー」のリセットやクリアなどのユーティリティを提供するため、標準ヘッダーモジュールの拡張バージョンです。Content-TypeContent-LengthServer

また、 more_set_headersおよびmore_clear_headersディレクティブを使用して出力ヘッダーを変更する際に、オプションを使用してオプションの HTTP ステータス コード条件とオプションを使用して-sオプションのコンテンツ タイプ条件を指定することもできます...-t

于 2010-02-17T12:24:19.920 に答える
2

唯一の方法は、ファイル src/http/ngx_http_header_filter_module.c を変更することです。48行目のnginxを別の文字列に変更しました。

nginx 構成ファイルでできることは、server_tokensをオフに設定することです。これにより、nginx がバージョン番号を出力できなくなります。

確認するには、 curl -I http://vurbu.com/ |を試してください。grep サーバー

返すべき

Server: Hai
于 2009-04-08T11:19:46.873 に答える
2

/usr/sbin/nginxParthian Shot の回答を読んだ後、バイナリ ファイルを掘り下げます。その後、ファイルにこれらの 3 行が含まれていることがわかりました。

Server: nginx/1.12.2
Server: nginx/1.12.2
Server: nginx

基本的に最初の 2 つはserver_tokens on;ディレクティブ用です (サーバー バージョンを含む)。次に、バイナリ ファイル内のこれらの行に一致するように検索条件を変更します。

sed -i 's/Server: nginx/Server: thing/' `which nginx`

さらに調べてみると、nginx によって生成されたエラー メッセージもこのファイルに含まれていることがわかりました。

<hr><center>nginx</center>

それらは 3 つあり、1 つにはバージョンがなく、2 つにはバージョンが含まれています。そこで、次のコマンドを実行して、エラー メッセージ内の nginx 文字列を置き換えます。

sed -i 's/center>nginx/center>thing/' `which nginx`
于 2018-08-08T12:32:16.773 に答える
2

投稿が少し古いことは知っていますが、ソースからnginxをコンパイルせずにDebianベースのディストリビューションで機能する簡単なソリューションを見つけました.

最初に nginx-extras パッケージをインストールします

sudo apt install nginx-extras

次に、nginx.conf を編集し、server ブロック内に次の行を追加して、nginx http headers more モジュールをロードします。

load_module modules/ngx_http_headers_more_filter_module.so;

完了すると、more_set_headers と more_clear_headers ディレクティブの両方にアクセスできるようになります。

于 2019-06-21T13:11:09.850 に答える
-4

応答のサーバー ヘッダー値について質問していますか? add_header ディレクティブを使用して変更を試みることはできますが、うまくいくかどうかはわかりません。http://wiki.codemongers.com/NginxHttpHeadersModule

于 2008-10-29T09:48:00.840 に答える