在CentOS中从源代码编译后如何自定义Nginx服务器名称

来自菜鸟教程
跳转至:导航、​搜索

介绍


作为 如何从源代码编译 nginx 文章的后续,本教程帮助您自定义主机上的服务器名称。 通常,公司出于安全原因修改服务器名称。 如果在特定版本的网络服务器中发现漏洞,黑客可以复制它以利用该行为。

自定义你的nginx服务器的名字需要修改源码(本教程会一步步指导你),需要从上一篇文章中重新编译。

查找服务器的版本


curl -I http://example.com/

HTTP/1.1 200 OK
Server: nginx/1.5.6 # <-- this is the version of nginx you currently use
Date: Thu, 17 Nov 2013 20:40:18 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Thu, 17 Nov 2013 20:37:02 GMT
Connection: keep-alive
ETag: "51f18c6e-264"
Accept-Ranges: bytes

更改 Nginx 服务器字符串


回到上个教程的 nginx 源码目录。 您应该在“下载源代码”部分之后查看上一篇关于从源代码 编译的教程

cd ~/src/nginx/
vi +49 src/http/ngx_http_header_filter_module.c

找到以下行:

static char ngx_http_server_string[] = "Server: nginx" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

并修改为:

static char ngx_http_server_string[] = "Server: the-ocean" CRLF;
static char ngx_http_server_full_string[] = "Server: the-ocean" CRLF;

使用新选项重新编译 Nginx


您需要按照 this guide 查看配置选项或从命令行历史记录中搜索:

./configure ... 
make
make install

停止在配置中显示服务器版本


vi +19 /etc/nginx/nginx.conf

在 http 配置下添加该行。 如果您有该部分,请重复 https

http {
...
server_tokens off;
....

重启 Nginx 服务


由于 nginx 文件已更改,我们需要重新启动 nginx:

service nginx restart

验证结果


让我们验证一下我们现在是否看到了服务器信息:

curl -I http://example.com/

HTTP/1.1 200 OK
Server: the-ocean
Date: Thu, 17 Nov 2013 20:50:17 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Thu, 17 Nov 2013 20:37:02 GMT
Connection: keep-alive
ETag: "51f18c6e-264"
Accept-Ranges: bytes

[[“%3Ca|http://sair.am/]] [[“%3C/a|”>塞拉姆·库纳拉]]