十大常用nginx命令

老刘

凌晨两点,服务器又报警了。你从被窝里爬起来,远程连上服务器,对着屏幕发呆三秒,然后默默敲下了那个熟悉的命令——nginx -t

别问我是怎么知道的。

搞服务器的,谁还没遇到过几次Nginx罢工的情况?今天不整虚的,直接上干活,聊聊我日常最常用的10个nginx命令。每一个都是真刀真枪跑过的,踩过的坑比吃过的盐还多。


1. nginx -t

这个必须放在第一位。

十大常用nginx命令

每次改完配置文件,我第一件事就是跑这条命令。它会帮你检查nginx.conf语法有没有写错,配置文件路径对不对。简直是防翻车神器。

nginx -t

如果配置没问题,它会输出:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

但凡有点问题,它会明明白白告诉你哪一行出错了。屡试不爽。

说白了,这就是nginx界的"体检报告"。改配置前不跑一下,等着的就是502 Bad Gateway。


2. nginx -s reload

改完配置,怎么让它生效?

别傻乎乎地kill掉所有进程再重启,用这个:

nginx -s reload

这是平滑重启,nginx会优雅地处理完当前请求,然后加载新配置。用户体验基本不受影响,网站不会挂。

有时候你会发现reload不生效——大概率是配置文件还有语法错误,先跑nginx -t检查一下。


3. nginx -s stopnginx -s quit

这两个都是停nginx,但区别大了去了:

  • nginx -s stop:立即停止,不管有没有请求在处理。相当于拔电源。
  • nginx -s quit:优雅停止,等所有请求处理完再停。体面退出。

我的习惯是:正常维护用quit,紧急救火用stop

# 优雅停止
nginx -s quit

# 强制停止
nginx -s stop

4. nginx -c

指定启动时使用的配置文件。

默认情况下nginx会找/etc/nginx/nginx.conf,但如果你有多个站点,想用不同的配置跑测试

nginx -c /etc/nginx/test.conf

本地调试多环境配置时,这个参数简直救大命。


5. nginx -vnginx -V

想知道当前服务器上nginx版本?

nginx -v

输出:

nginx version: nginx/1.24.0

但如果你想知道编译时带了什么参数(比如装了什么模块),用大写的V:

nginx -V

输出会很长,包含--with-xxx--prefix=之类的信息。排查模块缺失问题的时候,这个命令能帮上忙。


6. systemctl restart nginx

如果你的服务器用systemd管理(CentOS 7+、Ubuntu 16.04+),直接用这个最省事:

systemctl restart nginx

当然还有:

systemctl start nginx   # 启动
systemctl stop nginx    # 停止
systemctl status nginx  # 查看状态

我个人经验:生产环境慎用restart,用reload更稳。除非你要换配置文件路径或者彻底重置。


7. killall nginx

有时候reload不顶用,nginx进程好像死赖着不走怎么办?

killall nginx

直接杀掉所有nginx进程。然后再nginx启动新的。

如果杀不掉,可能是有进程处于僵死状态,加个-9

killall -9 nginx

温馨提示:生产环境慎用,动手前确保你有把握。


8. ps aux | grep nginx

想看nginx当前跑了几个进程,哪个PID是master,哪个是worker?

ps aux | grep nginx

输出大概是:

root      1234  0.0  0.0  51244  1456 ?        Ss   02:00   0:00 nginx: master process nginx
www-data  1235  0.0  0.2  52488  3456 ?        S    02:00   0:01 nginx: worker process
www-data  1236  0.0  0.2  52488  3456 ?        S    02:00   0:01 nginx: worker process

排查连接问题、定位worker进程异常,这个命令比什么都好使。


9. nginx -g

想在启动时直接命令行覆盖配置项?

nginx -g 'worker_processes 4;'

比如临时改一下worker进程数,不用改配置文件就能生效。测试环境调试特别方便。


10. nginx -s reopen

日志文件被删了,nginx还在往里写怎么办?

nginx -s reopen

这会让nginx重新打开日志文件,继续写入。配合logrotate使用,效果更佳。


写在最后

其实nginx命令远不止这10个,但日常运维中,上面这些能覆盖90%以上的场景。

我的建议是:改配置前先-t检查,reload后用ps aux | grep nginx确认进程状态,遇到问题别急着kill,先看看日志再说。

行了,命令都在这儿了,拿去用吧。遇到问题,欢迎回来评论区聊聊。

文章版权声明:文章内容均来源于各大短视频平台搜集以及修改和删减新增,如有侵权或者违规,请联系站长进行删除,如需转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,12人围观)

还没有评论,来说两句吧...

目录[+]