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






评论专区