nginx 添加伪静态后获取不到header信息

项目使用easyswoole,上线更换服务器并使用伪静态后,前端请求接口提示“请登陆”。查看发现redis有用户登陆信息,但获取的header信息为空。原因是nginx转发请求时默认忽略带“_”的头信息,解决方法是在nginx.conf配置文件的http头部添加underscores_in_headers on;。

最近项目使用的是easyswoole,登陆使用的是token,前端是通过header发送的登陆信息,项目上线的时候,更换服务器后,然后使用了伪静态,导致登陆过后,前端再去请求其他接口时,一直提示“请登陆”。然后查看redis,redis 里边存的是有用户的登陆信息,但是打印获取的header信息,是个空数组。然后就去查看nginx,查找原因后得知是nginx在转发请求时会默认忽略带有"_"下划线的头信息。

location / {
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_pass http://127.0.0.1:7700;
    proxy_set_header real-ip $remote_addr;
}

解决方法:找到nginx.conf 配置文件在http 头部添加 underscores_in_headers on;

### Nginx动静分离时静态资源访问404或无法访问的解决方案 在配置Nginx实现动静分离的过程中,如果遇到静态资源访问返回404错误的问题,通常可能由以下几个原因引起:路径配置错误、权限问题、文件实际不存在等。以下是详细的分析与解决方法: #### 1. 配置路径问题 Nginx中的`root`和`alias`指令用于指定静态资源的根目录,但两者的含义不同。`root`是在指定路径的基础上加上`location`匹配的URI部分,而`alias`则是直接替换`location`匹配的部分为指定路径[^2]。 - 如果使用了`root`指令,确保静态资源的实际路径与配置一致。例如: ```nginx location ~ .*.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ { root /Users/dalaoyang/Downloads/static; } ``` 上述配置中,`/Users/dalaoyang/Downloads/static`是静态资源的根目录,假设请求的URL为`/images/example.jpg`,Nginx会尝试访问`/Users/dalaoyang/Downloads/static/images/example.jpg`。如果该路径下有对应的文件,则会返回404错误。 - 如果使用了`alias`指令,确保路径正确替换。例如: ```nginx location /static/ { alias /Users/dalaoyang/Downloads/static/; } ``` 在此配置下,请求`/static/images/example.jpg`时,Nginx会查找`/Users/dalaoyang/Downloads/static/images/example.jpg`。若路径配置错误,也会导致404。 #### 2. 文件权限问题 即使路径配置正确,但如果静态资源所在的目录或文件有适当的读取权限,Nginx也无法正常访问这些文件。可以通过以下命令检查并设置权限: ```bash chmod -R 755 /Users/dalaoyang/Downloads/static chown -R nginx:nginx /Users/dalaoyang/Downloads/static ``` 上述命令将目录权限设置为可读,并将所有者更改为Nginx运行的用户组[^4]。 #### 3. 文件实际不存在 确认请求的静态资源确实存在于服务器上。例如,如果请求的是`/images/example.jpg`,则需要确保`/Users/dalaoyang/Downloads/static/images/example.jpg`文件存在。可以使用以下命令验证: ```bash ls -l /Users/dalaoyang/Downloads/static/images/example.jpg ``` #### 4. 配置冲突或未生效 有时Nginx配置文件可能存在冲突,或者修改后未重新加载配置文件。确保每次修改配置后执行以下命令以使更改生效: ```bash nginx -s reload ``` #### 5. 虚拟主机配置问题 如果使用了多个虚拟主机配置,确保每个虚拟主机的`server_name`与实际访问域名匹配。同时,检查是否存在其他`location`块覆盖了静态资源的匹配规则[^5]。 --- ### 示例配置 以下是一个完整的Nginx动静分离配置示例,包含动态请求转发和静态资源访问: ```nginx worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name www.testfront.com; # 动态请求转发 location / { proxy_pass http://www.testbackend.com; proxy_set_header X-Real-IP $remote_addr; } # 静态资源访问 location ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ { root /Users/dalaoyang/Downloads/static; } } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦夏夜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值