Pergunta

Há uma opção para ocultar a versão que ele irá exibir apenas nginx, mas existe uma maneira de esconder isso também que ele não vai mostrar nada ou alterar o cabeçalho?

Foi útil?

Solução

Como Apache, esta é uma edição rápida para a fonte e recompilar. De Calomel.org :

O servidor: string é o cabeçalho que é enviado de volta ao cliente para contar -lhes o tipo de servidor http você corrente e eventualmente qual a versão. Este texto é utilizado por lugares como Alexia e Netcraft para coletar estatísticas sobre quantas e de que tipo de servidor web são ao vivo na Internet. Para apoiar o autor e estatísticas para Nginx, recomendamos mantendo essa seqüência como é. Mas pelo segurança você pode não quer que as pessoas sabe o que está funcionando e você pode mudar isso no código-fonte. Editar o arquivo de origem src/http/ngx_http_header_filter_module.c a olhar para as linhas 48 e 49. Você pode Altere a seqüência para qualquer coisa que você quiser.

## 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;

março 2011 edit: Props para Flavius ??abaixo por apontar uma nova opção, substituindo o padrão de Nginx HttpHeadersModule com o bifurcada HttpHeadersMoreModule . Recompilar o módulo padrão ainda é a solução rápida, e faz sentido se você quiser usar o módulo padrão e não vai mudar a string servidor muitas vezes. Mas se você quer mais do que isso, o HttpHeadersMoreModule é um projeto forte e permite que você faça todos os tipos de tempo de execução de magia negra com o seu cabeçalhos HTTP.

Outras dicas

Se você estiver usando nginx para o proxy um aplicativo de back-end e quer que o back-end para fazer propaganda de seu próprio cabeçalho Server: sem nginx substituí-lo, então você pode ir para dentro de sua estrofe server {…} e set:

proxy_pass_header Server;

Isso vai convencer nginx para deixar esse cabeçalho sozinho e não reescrever o valor definido pelo back-end.

A última atualização foi há um tempo atrás, então aqui está o que funcionou para mim no Ubuntu:

sudo apt-get update
sudo apt-get install nginx-extras

Em seguida, adicione as duas linhas seguintes à seção http de nginx.conf, que geralmente está localizado no /etc/nginx/nginx.conf:

sudo nano /etc/nginx/nginx.conf
server_tokens off; # removed pound sign
more_set_headers 'Server: Eff_You_Script_Kiddies!';

Além disso, não se esqueça de reiniciar nginx com sudo service nginx restart.

Simples, editar /etc/nginx/nginx.conf e comentário remove from

#server_tokens off;

Pesquise http seção.

É muito simples: Adicione estas linhas para a seção de servidor:

server_tokens off;
more_set_headers 'Server: My Very Own Server';

Há um módulo especial: http://wiki.nginx.org/NginxHttpHeadersMoreModule

Este módulo permite-lhe adicionar, definir ou limpar qualquer saída ou cabeçalho de entrada que você especificar.

Esta é uma versão aprimorada do padrão cabeçalhos módulo porque fornece mais utilitários como a reposição ou compensação "builtin cabeçalhos" como Content-Type, Content-Length e Server.

Ele também permite que você especifique um critério código de status HTTP opcionais usando a opção -s e um opcional critérios de tipo de conteúdo usando a opção -t ao modificar os cabeçalhos de saída com o more_set_headers e more_clear_headers directivas ...

Instale Nginx Extras

sudo apt-get update
sudo apt-get install nginx-extras

detalhes do servidor pode ser removido a partir da resposta por adição de duas linhas seguintes no nginx.conf (em http secção)

more_clear_headers Server;
server_tokens off;

Se você está bem com apenas mudando o cabeçalho para uma outra corda cinco letras ou menos, você pode simplesmente corrigir o binário.

sed -i 's/nginx\r/thing\r/' `which nginx`

O que, como uma solução, tem algumas vantagens notáveis. Ou seja, que você pode permitir que o seu nginx de versão a ser tratado pelo gerenciador de pacotes (assim, não compilar a partir da fonte), mesmo se nginx-extras não está disponível para a sua distro, e você não precisa se preocupar com qualquer um dos adicional código de algo como nginx-extras ser vulnerável.

É claro, você também vai querer definir o server_tokens off opção, para esconder o número da versão, ou patch que string de formato também.

Eu digo "cinco letras ou menos", porque é claro que você sempre pode substituir:

nginx \ r \ 0

com

bob \ r \ 0 \ r \ 0

deixando os dois últimos bytes inalterados.

Se você realmente quer mais do que cinco caracteres, você vai querer sair server_tokens sobre, e substituir o (um pouco mais) string de formato, embora novamente há um limite superior para que o comprimento imposta pelo comprimento da cadeia de formato - 1 (para o retorno de carro).

... Se nenhuma das marcas acima sentido para você, ou você nunca remendado um binário antes, você pode querer ficar longe de esta abordagem, no entanto.

A única maneira é modificar o src arquivo / http / ngx_http_header_filter_module.c. Mudei nginx na linha 48 para uma sequência diferente.

O que você pode fazer no arquivo de configuração nginx é definir server_tokens para fora. Isso vai evitar que nginx de imprimir o número da versão.

Para verificar as coisas, tente onda -I http://vurbu.com/ | grep Servidor

Ele deve retornar

Server: Hai

Depois que eu li a resposta de tiro Parthian, eu cavar arquivo /usr/sbin/nginx binário. Então eu descobri que o arquivo contém essas três linhas.

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

Basicamente primeiro dois deles são destinados a directiva server_tokens on; (versão Server incluído). Então eu mudar os critérios de pesquisa para coincidir com as linhas dentro do arquivo binário.

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

Depois de cavar mais longe eu descobri que a mensagem de erro produzido por nginx também está incluído neste arquivo.

<hr><center>nginx</center>

Há três deles, uma sem a versão, dois deles incluídos na versão. Então eu execute o seguinte comando para substituir seqüência nginx dentro da mensagem de erro.

sed -i 's/center>nginx/center>thing/' `which nginx`

De acordo com nginx ele suporta valores personalizados ou mesmo o exclusão:

Syntax: server_tokens on | off | build | string;

mas infelizmente apenas com um assinatura comercial :

Além disso, como parte da nossa subscrição comercial, a partir de versão 1.9.13 da assinatura, em páginas de erro e a resposta “Servidor” cabeçalho campo valor pode ser definido explicitamente usando a corda com variáveis. Uma cadeia vazia desactiva a emissão do “Servidor” campo.

Eu sei que o post é meio velho, mas eu encontrei uma solução fácil que as obras sobre a distribuição baseada no Debian sem compilar nginx a partir da fonte.

Primeiro instale nginx-extras pacote

sudo apt instalar nginx-extras

Em seguida, carregar o nginx http cabeçalhos mais módulo editando nginx.conf e adicionando a seguinte linha dentro do bloco de servidor

load_module módulos / ngx_http_headers_more_filter_module.so;

Uma vez que é feito, você terá acesso a ambas as directivas more_set_headers e more_clear_headers.

Você está perguntando sobre o valor do cabeçalho do servidor na resposta? Você pode tentar mudar isso com uma directiva add_header, mas eu não tenho certeza se ele vai trabalhar. http://wiki.codemongers.com/NginxHttpHeadersModule

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top