Linux 中 Nginx 重启、重载与配置检查:常用命令与正确使用方式 在 Linux 服务器上部署 Web 应用时,Nginx 经常作为反向代理服务器,负责将用户请求转发到后端应用,例如 Next.js、Node.js、Java、Python 等服务。 在修改 Nginx 配置之后,我们经常需要...
在 Linux 服务器上部署 Web 应用时,Nginx 经常作为反向代理服务器,负责将用户请求转发到后端应用,例如 Next.js、Node.js、Java、Python 等服务。
在修改 Nginx 配置之后,我们经常需要执行重启或者重载操作。
但很多人会直接使用:
sudo systemctl restart nginx
实际上,Nginx 的 restart、reload 和配置检查 有不同的使用场景。
本文记录几个日常运维中最常用的 Nginx 命令。
首先可以查看 Nginx 当前运行状态:
sudo systemctl status nginx
如果正常运行,可以看到类似:
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded Active: active (running)
其中:
Active: active (running)
表示 Nginx 当前正在运行。
如果看到:
Active: failed
则说明 Nginx 启动失败,需要进一步查看错误原因。
在重启 Nginx 之前,非常推荐先执行:
sudo nginx -t
例如:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
这表示当前 Nginx 配置文件语法正确,可以进行 reload 或 restart。
因为如果刚刚修改了配置,例如:
server { listen 80; server_name www.example.com; location / { proxy_pass http://127.0.0.1:3000; } }
不小心写错了一个括号:
server { listen 80; server_name www.example.com; location / { proxy_pass http://127.0.0.1:3000; }
Nginx 就可能无法重新加载配置。
所以一个比较安全的习惯是:
sudo nginx -t
确认没有错误之后,再执行后续操作。
如果确实需要完整重启 Nginx,可以执行:
sudo systemctl restart nginx
这个命令会:
例如修改了配置之后:
sudo nginx -t sudo systemctl restart nginx
也可以合并成一条命令:
sudo nginx -t && sudo systemctl restart nginx
&& 的作用是:
只有前面的命令执行成功,才继续执行后面的命令。
因此如果:
sudo nginx -t
检查失败,Nginx 就不会执行 restart。
这是 Nginx 日常运维中非常重要的一个区别。
sudo systemctl restart nginx
会重新启动 Nginx 服务。
可以理解成:
停止 Nginx ↓ 重新启动 Nginx
在重启过程中,可能会产生短暂的服务中断。
sudo systemctl reload nginx
则是让正在运行的 Nginx 重新读取配置文件。
可以理解成:
当前 Nginx ↓ 读取新的配置 ↓ 平滑切换到新配置
一般修改 Nginx 配置时,优先使用:
sudo systemctl reload nginx
而不是 restart。
例如:
sudo nginx -t && sudo systemctl reload nginx
这是我个人在修改 Nginx 配置时更推荐使用的一种方式。
如果只是修改了:
/etc/nginx/sites-available/web
这种网站配置文件,通常不需要完整 restart。
可以:
sudo nginx -t && sudo systemctl reload nginx
而以下情况可能更适合 restart:
例如:
sudo systemctl restart nginx
然后检查:
sudo systemctl status nginx
Ubuntu 中 Nginx 的主配置文件通常位于:
/etc/nginx/nginx.conf
可以查看:
sudo cat /etc/nginx/nginx.conf
或者使用:
sudo less /etc/nginx/nginx.conf
Ubuntu 默认通常会使用:
/etc/nginx/sites-available/
保存网站配置。
例如:
/etc/nginx/sites-available/web
查看:
sudo cat /etc/nginx/sites-available/web
如果配置内容比较长,可以:
sudo less /etc/nginx/sites-available/web
Ubuntu 的 Nginx 配置中经常会看到:
/etc/nginx/sites-available/
和:
/etc/nginx/sites-enabled/
它们的关系可以简单理解为:
sites-available │ │ 保存网站配置 ↓ sites-enabled │ │ 启用的网站 ↓ Nginx
例如:
/etc/nginx/sites-available/web
是真正保存配置的文件。
而:
/etc/nginx/sites-enabled/web
通常是一个软链接。
可以查看:
ls -l /etc/nginx/sites-enabled/
可能看到:
web -> /etc/nginx/sites-available/web
这意味着 web 配置已经被启用。
如果服务器上的 Nginx 配置比较复杂,可以使用:
sudo nginx -T
这个命令非常实用。
与:
sudo nginx -t
相比:
nginx -t
主要用于检查配置是否正确。
而:
nginx -T
除了检查配置,还会把 Nginx 当前加载的完整配置输出出来。
当你不知道某个配置到底有没有生效时,可以使用:
sudo nginx -T
然后搜索:
server_name
或者:
proxy_pass
日常修改网站配置时,可以形成一个固定流程。
例如修改:
/etc/nginx/sites-available/web
修改完成后:
sudo nginx -t
sudo systemctl reload nginx
或者直接:
sudo nginx -t && sudo systemctl reload nginx
sudo systemctl status nginx
首先检查:
sudo nginx -t
如果出现:
nginx: [emerg] ...
说明配置存在问题。
例如:
nginx: [emerg] unexpected "}" in /etc/nginx/sites-enabled/web:25
这里就说明:
/etc/nginx/sites-enabled/web
第 25 行附近存在配置语法问题。
可以直接查看:
sudo nano /etc/nginx/sites-available/web
修改完成后重新检查:
sudo nginx -t
确认:
syntax is ok test is successful
再:
sudo systemctl reload nginx
如果 Nginx 启动失败或者网站访问异常,可以查看错误日志。
Ubuntu 常见位置:
/var/log/nginx/error.log
查看:
sudo tail -f /var/log/nginx/error.log
例如:
sudo tail -n 100 /var/log/nginx/error.log
查看最近 100 行。
访问日志通常位于:
/var/log/nginx/access.log
查看:
sudo tail -f /var/log/nginx/access.log
| 操作 | 命令 |
|---|---|
| 查看状态 | sudo systemctl status nginx |
| 启动 | sudo systemctl start nginx |
| 停止 | sudo systemctl stop nginx |
| 重启 | sudo systemctl restart nginx |
| 重载配置 | sudo systemctl reload nginx |
| 检查配置 | sudo nginx -t |
| 查看完整配置 | sudo nginx -T |
| 查看错误日志 | sudo tail -f /var/log/nginx/error.log |
| 查看访问日志 | sudo tail -f /var/log/nginx/access.log |
如果平时主要是在服务器上维护自己的 Web 项目,其实记住下面三条就已经可以解决大量问题:
# 1. 检查配置 sudo nginx -t # 2. 平滑加载新配置 sudo systemctl reload nginx # 3. 查看运行状态 sudo systemctl status nginx
如果刚刚修改完 Nginx 配置,可以直接:
sudo nginx -t && sudo systemctl reload nginx
只有在确实需要重新启动 Nginx 服务时,再使用:
sudo systemctl restart nginx
Nginx 的 restart 和 reload 虽然都可以让新的配置生效,但用途并不完全相同。
修改配置 → 检查 → reload 是日常运维中比较推荐的流程:
修改配置 ↓ sudo nginx -t ↓ 配置正确? ↓ sudo systemctl reload nginx ↓ 检查网站
而当 Nginx 服务本身出现异常时,再考虑:
sudo systemctl restart nginx
养成修改配置后先执行 nginx -t 的习惯,可以避免因为一个简单的配置错误导致 Nginx 无法重新加载。
暂无评论,留下第一条声音吧。