Nginx 源码编译报错:PCRE library not found?
原因:
在执行 ./configure 时,提示 the HTTP rewrite module requires the PCRE library。
解决方案:
这是因为缺少正规表达式库依赖开发包。需要根据操作系统类型安装依赖包:
# Ubuntu/Debian
sudo apt install libpcre3 libpcre3-dev -y
# CentOS/RHEL
sudo yum install pcre pcre-devel -y
Nginx 启动失败:Address already in use?
原因:
启动 Nginx 时报错 bind() to 0.0.0.0:80 failed (98: Address already in use)。
解决方案:
Nginx 配置端口已被占用(如 80 端口已被其他程序 Apache 或已运行的 Nginx 占用)。
1. 使用以下指令排查并关闭占用进程:
# 查找占用 80 端口的 PID
sudo lsof -i :80
# 或者使用
sudo netstat -tpln | grep :80
# 杀掉占用进程(替换 PID)
sudo kill -9 [PID]
2. 修改 Nginx 配置端口并重新启动 nginx。
配置 HTTPS 时提示 SSL 模块未开启?
原因:
在配置文件中写了 ssl on 或 listen 443 ssl,但报错 unknown directive "ssl" 或 the "ssl" parameter requires ngx_http_ssl_module。。
解决方案:
如果是源码编译方式安装的,说明在 ./configure 时没有添加 SSL 模块。您需要重新编译 Nginx 源代码:
# 回到 Nginx 源码目录,重新配置并加入 ssl 模块并重新编译 Nginx 源代码
./configure --with-http_ssl_module [其他原有参数]
make
sudo make install
客户端访问出现 403 Forbidden 错误?
Nginx 已启动,但访问网页显示 403。
原因:
Nginx 启动用户读写权限不足或网站索引文件丢失。
解决方案:
1. 检查网站目录权限:确保 Nginx 运行用户对网页目录有读取权限。
sudo chmod -R 755 /var/www/html
2. 检查 SELinux(仅限 CentOS):
# 临时关闭测试
sudo setenforce 0
400 Bad Request 错误?
原因:
客户端请求头或 cookie 过大。
解决方案:
增大 client_header_buffer_size 和 large_client_header_buffers 的值。
Nginx 已正常启动,客户端无法访问错误?
原因:
检查系统防火墙未开放端口80
解决方案:
1. 执行命令开放端口。
# 查看系统已开放的端口
firewall-cmd --list-ports
# 添加系统防火墙端口
firewall-cmd --permanent --add-port=80/tcp && firewall-cmd --reload
Nginx 配置文件语法错误?
解决方案:
每次修改 Nginx 配置文件后,执行 nginx -t 测试配置文件是否正确有效。
Nginx 常用命令
# 检查配置
nginx -t
# 查看日志
tail -f /var/log/nginx/error.log
# 检查端口
netstat -tulnp | grep :80 或 ss -tulnp | grep :80
# 平滑重启
nginx -s reload