源码安装的 Nginx 卸载需手动清理:先停服务,再删 /usr/local/nginx 及 /var/log/nginx 等目录,清 systemd 服务、PATH 和编译残留,最后验证 nginx -v 报错、路径不存在、端口无监听。

源码安装的 Nginx 没有包管理器自动跟踪,卸载必须手动清理。核心原则是:先停服务、再删二进制与配置、最后清编译痕迹。漏掉 /usr/local/nginx 或 /var/log/nginx 容易导致重装冲突或磁盘占用。
确认当前 Nginx 运行状态和安装路径
避免误删正在运行的服务或系统自带版本:
- 执行
ps aux | grep nginx查看主进程,若有输出说明服务在运行,先用sudo /usr/local/nginx/sbin/nginx -s stop停止(路径以实际为准) - 用
which nginx和nginx -V 2>&1 | grep "prefix"确认安装前 configure 的 --prefix 路径(常见为/usr/local/nginx),这是所有文件的根目录 - 检查是否混用包管理器安装(如
apt list --installed | grep nginx或rpm -qa | grep nginx),若存在,优先用对应包命令卸载,不要手动删
删除 Nginx 主程序、配置与日志目录
按 prefix 路径逐层清理,不跳过子目录:
-
sudo rm -rf /usr/local/nginx(替换为你实际的 prefix 路径) - 删除默认日志位置:
sudo rm -rf /var/log/nginx(若 configure 时未指定 --error-log-path 等,就在此) - 检查并清理可能的手动创建配置备份:
ls -l /etc/nginx* /usr/local/etc/nginx*,存在则一并rm -rf - 清除 systemd 服务文件(如果曾配置):
sudo rm /etc/systemd/system/nginx.service,然后运行sudo systemctl daemon-reload
清理编译残留与环境变量
源码编译过程可能留下临时文件或影响后续安装:
- 进入当初解压的源码目录(如
nginx-1.24.0),执行make clean(仅清除 obj 文件,不删源码) - 检查 shell 配置文件是否添加了 Nginx 路径:
grep "nginx\|local/nginx" ~/.bashrc ~/.bash_profile ~/.profile /etc/profile,若有,编辑对应文件删掉export PATH=...行 - 执行
source ~/.bashrc(或对应文件)使 PATH 生效,并用echo $PATH验证无残留路径
验证是否彻底卸载
三项检查缺一不可:
-
nginx -v应报 “command not found” -
ls /usr/local/nginx应提示 “No such file or directory” -
sudo lsof -i :80或sudo ss -tuln | grep ':80'确保无 nginx 进程监听 80/443 端口
清理干净后,重装可直接重新 configure + make + make install,无需额外干预。不复杂但容易忽略日志和 PATH,建议每步后快速验证一次。


















