这是我参与18月更文挑战的第27天,活动详情查看:2021最后一次更文挑战
问题描述:
- 一次在公司部署前后端项目时,当以为都部署成功了,当输入用户名密码时,明明是正确的,为什么一直说是无权限,检查日志也没打印错误,利用postman测试接口的时候发现接口地址也是能够正确访问的,网关配置也是正确的,那么问题出在哪里了?排除了一下,问题会不会出在controlle层的拦截或者是ngnix的配置上,测试了另一个接口可以访问controller层暂时可以排除问题不出现cotroller层 那问题就应该出现在ngnix的配置上,则通过浏览器去仔细去看接口带的请求头中包含的token标志是xxx_Authorization,那猜测就是在nognix代理的时候没有把token带过去导致无权限 那为啥会把token顾虑掉呢?
解决
- 原来nginx默认request的header的那么中包含
_时,会自动忽略掉所以解决办法就是
在nginx里的nginx.conf配置文件中的http部分中添加如下配置:
underscores_in_headers on;
因为在ngnix中默认是off
因此接此上面出现的坑我想对ngnix的配置参数有一个整体的了解(可以官网下载一个ngnix 并打开他的配置文件) 今天先分享一下他的整体结构
#user nobody; #配置用户或者组
worker_processes 1; #允许生成的进程数
#error_log logs/error.log; #则就是打印日志的路径 后面的notice info 都是其那级别
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
server {
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server {
}
}
首先相对ngnix的配置的一个整体有一个把握
- 全局块 配置影响nginx全局的指令 例如上面配置的有允许服务器的用户组,允许生成的进程数,存放日志的路径,nginx进程pid存放路径 配置文件也可以再上面进行一个引入
- events块:配置影响nginx服务器或与用户的网络连接
- http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置(例如我们部署项目的时候就在这个http的块中进行配置 而我上面出现的忽略掉下划线的配置也应该在这个块中进行配置)
- server块:配置虚拟主机的相关参数,一个http中可以有多个server (例如我们在配置前端项目的时候 有多个微服务模块 我们可以多配置几个server模块)
- location块:配置请求的路由,以及各种页面的处理情况
今天我主要是根据自己在工作中遇到的坑来对nignix有一个整体的把握,我在下一篇文章将继续分享一下关于ngnix每一个模块中又包含那些参数 以及他们有什么含义