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

NGINX配置server_tokens off隐藏Passenger版本及X-Powered-By头失效

问题原因
  • 你使用的proxy_hide_header指令仅对Nginx反向代理(即通过proxy_pass转发的上游服务响应)生效,Phusion Passenger是以Nginx模块形式嵌入运行的,不属于代理上游,因此该指令对Passenger注入的响应头完全无效。
  • server_tokens off仅能控制Nginx自身的版本号展示,不会影响Passenger模块注入的版本标识。Passenger有独立的版本头展示开关,不会继承Nginx的该配置。
  • Passenger相关的头控制指令如果仅写在局部location块中,无法覆盖其他路径(比如你配置的隐藏文件拦截规则、静态资源路径)的响应,会出现头信息漏出的问题。
修复步骤

1. 关闭Passenger自带的版本号展示(无需额外模块)

编辑Nginx主配置文件(通常路径为/etc/nginx/nginx.conf),在http配置块中添加Passenger官方提供的版本隐藏开关:

http {
    # 保留原有http块内的其他配置不变
    passenger_show_version_in_header off;

    # 原有的server块引入等配置保持不动
}

该配置生效后,会直接移除Passenger在Server和X-Powered-By头中追加的版本号:

  • Server头会从nginx + Phusion Passenger(R) 6.0.14变为nginx + Phusion Passenger(R)
  • X-Powered-By头会从Phusion Passenger(R) 6.0.14变为Phusion Passenger(R)

注意:不要把该配置只写在单个server或location块中,放在http块全局生效可以避免部分路径漏出版本信息。

2. (可选)完全移除X-Powered-By、自定义Server头

如果需要彻底删除X-Powered-By响应头,或是完全移除Server头中的Passenger标识,需要先安装headers-more-nginx-module模块:Debian/Ubuntu系统可以直接通过源安装nginx-extras包,该包默认内置此模块,无需手动编译。
安装完成后,同样在http块中添加如下配置:

http {
    # 其他原有配置不变
    passenger_show_version_in_header off;

    # 彻底清除X-Powered-By头
    more_clear_headers 'X-Powered-By';
    # 如需将Server头修改为仅展示nginx,添加下行
    more_set_headers 'Server: nginx';
}

3. 清理无效配置并重载

删除你原来写在location /块中的proxy_hide_header X-Powered-By;配置,该配置对Passenger场景无任何作用。
依次执行以下命令检查配置、重载Nginx生效:

nginx -t
systemctl reload nginx

重载完成后再通过curl验证,即可看到响应头中的Passenger版本信息已被移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:30:47