linux查看nginx版本

 人参与 | 时间:2026-10-17 09:12:36

linux查看nginx版本

直接敲命令就行,版本nginx -v 是版本最快的路子。但别急着复制粘贴——这个命令输出的版本是编译进二进制里的版本号,也就是版本你实际跑着的那份代码。我见过不少同事,版本明明线上跑着1.18,版本查出来却是版本1.16,原因是版本PATH里指向了另一个安装目录。

先试这个:

nginx -v 

终端会打印类似 nginx version: nginx/1.18.0 (Ubuntu) 这样的版本信息。注意,版本小写 -v 只输出版本,版本大写 -V 会附带编译参数、版本模块列表、版本配置文件路径。版本后者才是版本排查问题时真正要用的。

如果你拿到的是 command not found,别慌。八成是nginx没在系统PATH里。这时候用 which nginx 或者 find / -name nginx -type f 2>/dev/null 找一下二进制文件在哪。找到后直接全路径执行:

/usr/local/nginx/sbin/nginx -v 

真实环境里,我碰到过一种更隐蔽的情况——nginx其实跑在Docker容器里。宿主机上敲 nginx -v 当然报错,因为压根没装。这时候得进容器:

docker exec <容器名或ID> nginx -v 

如果容器里连nginx命令都没有(比如用了精简镜像),那就得看进程了。ps aux | grep nginx 能看到master进程的启动参数,但版本号不直接显示。更靠谱的是看编译时留下的配置痕迹——nginx -V 输出的 --with-cc-opt 或 --add-module 能帮你判断是官方包还是自己编译的。

还有个野路子,直接读nginx的二进制文件头。用 strings /usr/sbin/nginx | grep 'nginx version' 能抓出版本字符串。不过这个方法不推荐日常用,除非你连执行权限都没有——比如在别人的服务器上做渗透测试。

最后提醒一句:版本号不等于安全状态。1.18.0和1.20.2差着两个大版本,但如果你用的是发行版维护的包,人家可能已经给旧版本打了安全补丁。所以查完版本,顺手看一眼 nginx -T 的输出,确认编译参数里有没有 --with-http_ssl_module 这种关键模块,比单纯纠结版本号数字更有意义。

查版本这事,三秒钟能搞定。但搞清楚“查的是哪个nginx”,才是真正考验功力的地方。毕竟,跑在80端口上的那个进程,和你PATH里那个二进制,可能根本不是同一个爹生的。

顶: 7踩: 44565