Unfortunately the only way to change the server header in nginx is to actually recompile it from source. Luckily this is quite easy.
First, download the latest version of nginx (0.7.61 at the time of writing) :
> wget http://sysoev.ru/nginx/nginx-0.7.61.tar.gz > tar xvzf nginx-0.7.61.tar.gz > cd nginx-0.7.61
Changing the server string
The server header is in a file called ngx_http_header_filter_module.c :
> vi src/http/ngx_http_header_filter_module.c
Edit the following line (currently line 48 in version 0.7.61) :
static char ngx_http_server_string = "Server: nginx" CRLF;
… and change the nginx in ‘Server: nginx’ to whatever you want:
static char ngx_http_server_string = "Server: recurser" CRLF;
Next, edit src/core/nginx.h :
> vi src/core/nginx.h
Edit the following line (currently line 13 in version 0.7.61) :
#define NGINX_VER "nginx/" NGINX_VERSION
… and change the server string to whatever you want:
#define NGINX_VER "recurser/" NGINX_VERSION
Changing the version number
You might also want to change the version number to confuse attackers, or just for fun :) Edit src/core/nginx.h :
> vi src/core/nginx.h
Edit the following line (currently line 12 in version 0.7.61) :
#define NGINX_VERSION "0.7.61"
… and change the version to whatever you want:
#define NGINX_VERSION "1.0"
You can stop nginx from displaying the version entirely if you want, by including the server_tokens directive in your nginx.conf :
You can set the prefix as appropriate - I keep it in /opt/ on Ubuntu.
> ./configure --prefix=/opt/nginx-0.7.61 --with-http_ssl_module > make > sudo make install
After this, use .bashrc or similar to add /opt/nginx-0.7.61/sbin to your path, then you can start your new nginx install using :
> sudo ngingx
To stop it, use ‘-s’ to send the stop signal :
> sudo nginx -s stop
If you check the reponse headers, you should see your custom server string :
Server: recurser/1.0, recurser Date: Tue, 11 Aug 2009 02:47:31 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive X-Powered-By: PHP/5.2.4-2ubuntu5.6 X-Pingback: http://recurser.com/xmlrpc.php Expires: Tue, 18 Aug 2009 02:47:31 GMT Last-Modified: Tue, 11 Aug 2009 02:47:31 GMT Cache-Control: max-age=604800 Pragma: no-cache Content-Encoding: gzip