Nginx 报错问题汇总

目录

一、nginx: [emerg] invalid number of arguments in "include" directive in C:\Program Files\nginx-1.15.4/conf/nginx.conf:61

总结:

二、nginx: [error] OpenEvent("Global\ngx_reload_2152") failed (5: Access is denied)

解决方案:

三、nginx: [emerg] unknown directive "stream" in /etc/nginx/nginx.conf:13 

问题原因:

解决办法:


一、nginx: [emerg] invalid number of arguments in "include" directive in C:\Program Files\nginx-1.15.4/conf/nginx.conf:61

操作系统:Windows

小皮(phpstudy)突然报错:nginx: [emerg] CreateFile(),重启系统,电脑都不行;

导致Nginx系统没法访问,网站打不开。是由于C:\Program Files\phpstudy_pro\Extensions\Nginx1.15.11\conf\vhosts下的 .conf文件中的路径不对,需要调整对应的路径即可。如下

在Windows命令行中执行 nginx -s reload 时提示报错信息:

大致意思是:nginx: [emerg]在C:\Program Files\ nginx-1.15.4/conf/nginx.conf中"include"指令中的参数数量无效

根据报错信息的指示去 nginx.conf 文件的第61行代码查看:

	include C:/Program Files/nginx-1.15.4/conf/conf.d/*.conf;

.conf文件的路径中英文单词之间不能留有空格!!(Program Files 之间有空格)

修改后:    

include C:/ProgramFiles/nginx-1.15.4/conf/conf.d/*.conf;

再用 nginx -t 检查一遍,没有报错了:

但是这样nginx依然检测不到这个路径,因为Windows中的 C:/Program Files 文件夹是有空格的,除非你修改这个文件夹的名字删除空格,但是这样就会影响到其他Windows上的程序,所以建议nginx还是不要安装在有空格、中文名称的目录下为好! 

总结:

nginx配置文件中填写的路径格式和目录(文件夹)名称中不能有空格、中文、反斜杠(\)!!

二、nginx: [error] OpenEvent("Global\ngx_reload_2152") failed (5: Access is denied)

操作系统:Windows

使用 nginx -t 检测没有报错信息,反而使用 nginx -s reload 时出现报错:

解决方案:

先进入nginx的安装目录,使用 start nginx.exe,再使用 nginx -s reload 即可成功!!

三、nginx: [emerg] unknown directive "stream" in /etc/nginx/nginx.conf:13 

 操作系统:CentOS 7.6

[root@k8s-master1 work]# nginx -t
nginx: [emerg] unknown directive "stream" in /etc/nginx/nginx.conf:13
nginx: configuration file /etc/nginx/nginx.conf test failed

问题原因:

因为在 nginx 中增加了这个 steam 模块配置:

解决办法:

#1. 安装阿里云 epel.repo 源(如果第二步执行不成功,再执行这步,记得提前备份好原来的 epel.repo)
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
 
yum -y install epel-release
 
#2. 应该是缺少 modules 模块
yum -y install nginx-all-modules.noarch
 
# 然后在用 nginx -t 就好了
[root@k8s-master1 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
这个错误通常出现在使用Nginx作为Web服务器时,当客户端(如浏览器)发送了一个不被允许的HTTP方法(如POST、PUT、DELETE等)请求一个只允许GET和HEAD方法的资源时,Nginx会返回405错误。以下是一些可能的原因和解决方法: ### 原因 1. **请求方法不被允许**:客户端发送的HTTP方法(如POST、PUT、DELETE等)在服务器的配置文件或路由设置中没有被允许。 2. **Nginx配置问题**:Nginx的配置文件可能没有正确设置允许的HTTP方法。 ### 解决方法 1. **检查Nginx配置**: 确保你的Nginx配置文件(通常是`nginx.conf`或站点特定的配置文件)中正确配置了允许的HTTP方法。例如: ```nginx server { listen 80; server_name example.com; location / { root /var/www/html; index index.html index.htm; try_files $uri $uri/ =404; if ($request_method !~ ^(GET|HEAD|POST)$) { return 405; } } } ``` 在这个配置中,只有GET、HEAD和POST方法被允许。如果需要允许更多的方法,可以将它们添加到`if`语句中。 2. **使用`limit_except`指令**: 你可以使用`limit_except`指令来限制允许的HTTP方法。例如: ```nginx server { listen 80; server_name example.com; location / { root /var/www/html; index index.html index.htm; try_files $uri $uri/ =404; } location /api/ { limit_except GET POST { deny all; } proxy_pass http://backend; } } ``` 在这个配置中,`/api/`路径只允许GET和POST方法,其他方法将被拒绝。 3. **检查客户端请求**: 确保客户端发送的请求方法是被服务器允许的。你可以使用浏览器的开发者工具或命令行工具(如`curl`)来检查请求方法。 ### 总结 405错误通常是由于请求方法不被允许引起的。通过检查和调整Nginx配置文件,确保允许的HTTP方法正确配置,可以解决这个问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值