You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找Amazon Linux 2上通过amazon-linux-extras安装的NGINX源代码

针对Amazon Linux 2 通过amazon-linux-extras安装的Nginx 1.20获取并修改源码的操作方案

前置说明

通过amazon-linux-extras安装的Nginx是预编译的二进制包,默认不会附带源代码,你需要手动下载对应版本的源码包进行修改编译。

步骤1:获取当前Nginx的编译参数

编译替换前需要匹配原有Nginx的所有编译配置,避免功能缺失,执行以下命令导出参数:
nginx -V
复制输出内容中configure arguments:后面的全部内容,后续编译配置会用到。

步骤2:下载对应版本的Nginx源码

执行以下操作下载对应源码包:

  • 先启用对应源并安装依赖工具:
    amazon-linux-extras enable nginx1
    yum install -y yum-utils
    
  • 下载Nginx源码RPM包:
    yumdownloader --source nginx
  • 解压源码包:
    rpm2cpio nginx-1.20*.src.rpm | cpio -idmv
    解压完成后,ngx_http_header_filter_module.c的路径为:./BUILD/nginx-1.20.x/src/http/ngx_http_header_filter_module.c(x为你当前安装的小版本号)

步骤3:修改服务器响应头内容

打开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;

将引号内的字符串修改为你想要的响应头内容即可,比如完全隐藏Nginx标识可以改成:

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

步骤4:编译替换原有Nginx二进制

  • 安装编译依赖:
    yum install -y gcc pcre-devel zlib-devel openssl-devel
  • 进入解压后的Nginx源码根目录,粘贴之前复制的configure参数并执行:
    ./configure [你之前复制的全部configure参数]
  • 执行编译:
    make
  • 备份原有Nginx二进制文件,避免出错:
    cp /usr/sbin/nginx /usr/sbin/nginx.bak
  • 替换新编译的二进制文件:
    cp objs/nginx /usr/sbin/nginx
  • 测试配置合法性,没问题后重启服务生效:
    nginx -t
    systemctl restart nginx
    

额外说明

  • 如果你只需要隐藏Nginx版本号,不需要完全自定义Server头,不需要修改源码,直接在Nginx配置的http块中添加server_tokens off;即可实现。
  • 为了避免后续yum更新覆盖你修改的版本,可以在/etc/yum.conf中添加exclude=nginx*,将Nginx加入更新排除列表。

内容的提问来源于stack exchange,提问作者PythonicExperience

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:27:03