我已经运行 nginx 服务器一段时间了,并且做了大量更改,以便为我的一位客户提供合适的服务。他们最近聘请了渗透测试人员,希望我加强安全性。因此,我需要隐藏 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