Nginx问题汇总
1.unknown directive “worker_processes”
出现这个问题,就是修改nginx.conf的编码,改为UTF-8编码。
1.nginx启动失败 unknown directive “worker_processes” (这个文章给了思路)
3.403禁止问题解决思路
这里需要配置两个路由,一个是 /disaster,一个是 /disaster/public ,我需要在 /disaster 下配置 /disaster/public 访问,这个disaster是一个vue项目,这个 /disaster/public 目录是另外一个vue项目。因为disaster配置了 try_files $uri $uri/ /renfang/index.html, 不匹配的路由,统统跳转到了 index.html 页面,防止页面空白。但是这也同时造成了一个问题,就是说 路由到了 /disaster/public 的时候,最后也会跳转到了 /diaster 路由,导致始终无法访问到 /disaster/public目录。
本来我的目录是 C:/projects/disaster 目录下,还有一个 public 目录,后来查看nginx的访问error.log日志,结果出现了:directory index of “C:/projects/disaster/public” is forbidden 错误,于是我把 public目录移到了 C:/projects/disaster-public/ 目录。
同时我尝试了设置了用户权限,设置了EveryOne,还是显示403禁止,我尝试了加 斜杠和不加斜杠了,最终都无法访问 /disaster/public 项目。
【解决方法】
经过不断的尝试,不断的试错,经过三个小时的奋斗,最后终于算是解决了这个问题,主要做了下面的几个地方的修改:
(1) nginx最后的配置如下:
1 | location ^~ /disaster/public { |
(2) vue-router增加了一个空的路由,
1 | // 空的目录 |
(3) 在路由导航中进行判断,如果有public进行跳转。
1 | const whitelist=['login','public']; // 路由白名单 |
(4) 还有一点注意的,可能就是缓存的问题了,清空浏览器缓存,清空钉钉的缓存,重新访问页面。
1.Nginx打开目录浏览功能(autoindex)
2.Another root/alias in location produces 403
3.Nginx中location、proxy_pass后方加不加斜杠/的区别
4.Nginx 403 error: directory index of [folder] is forbidden
5.一文理清 nginx 中的 location 配置(系列一)
4../nginx: error while loading shared libraries: libssl.so.1.1:
使用 “./nginx -V” 命令查看nginx版本时,出现这个问题。
1 | # 查看依赖 |
1.Linux下查看Nginx安装目录、版本号信息?
2./nginx: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No 这里是缺少 libcrypto.so.1.1 文件,但是我的是缺少libssl.so.1.1文件。
3.解决报错libssl.so.1.1: cannot open shared object file: No such file or directory
4.linux检测openssl是否安装,Linux下Openssl的安装全过程
5.Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.
在前端使用使用ajax请求时,设置了Content-Type:application/json,后台就返回了一个错误。
解决方法,在nginx配置文件中增加配置。
1 | Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization |
1.nginx服务器返回json文件时content-type不正确的坑
2.跨域问题服务端解决办法 Request header field Authorization is not allowed by Access-Control-Allow-Headers
3.如何解决出现AXIOS的Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.
6.windows启动报错
在windows上启动nginx,需要注意两点
(1) 路径不支持中文
(2) 路径的格式为D:/soft/www,而不是D:\soft\www
1.nginx. 启动nginx访问报错 (这里有路径格式的说明)
7.504 Gateway Time-out
config添加配置:
1 | location ~ \.php { |
8.host not found in upstream
nginx 启动错误”nginx: [emerg] host not found in upstream “解决方案。
9.413 Request Entity Too Large问题的解决方法
可以在三个地方通过配置 client_max_body_size 20m; 限制文件传输的大小。
(1)第一个是 http{},控制着所有nginx收到的请求。
(2)第二个是server{}中,则控制该server收到的请求报文大小。
(3)同理,如果配置在location中,则报文大小限制,只对匹配了location 路由规则的请求生效。
1.nginx 出现413 Request Entity Too Large问题的解决方法
2.三个思路解决413 Request Entity Too Large报错处理
3.nginx 更改配置client_max_body_size没有生效
10.请求参数消失
使用nginx转发请求的时候,导致查询不到后面的值。需要设置以下内容
1 | location / { |
11.woff、ttf访问出现404
12.The plain HTTP request was sent to HTTPS port
1.解决故障码400,“”The plain HTTP request was sent to HTTPS port“” 简单从报错的字面意思上来看,是因为HTTP请求被发送到HTTPS端口,这种报错多出现在Nginx既处理HTTP请求又处理HTTPS请求的情况。
2.解决The plain HTTP request was sent to HTTPS port