Nginx配置将/tmp映射为/npm-logs访问异常求助
问题排查与解决
核心问题分析
访问/npm-logs时,请求会落入根路径/的location块(因为你的配置只匹配/npm-logs/带尾斜杠的路径),而根路径指向React应用,应用没有对应路由,因此显示前端错误页面。此外,SELinux可能限制Nginx读取/tmp目录,即使文件系统权限正常。
修复步骤
1. 修正Nginx配置,处理无尾斜杠的请求
在现有location /npm-logs/块前添加精确匹配规则,将/npm-logs重定向到带尾斜杠的路径:
location = /npm-logs { return 301 $scheme://$host/npm-logs/; } location /npm-logs/ { autoindex on; alias /tmp/; add_header Cache-Control "no-store, no-cache, must-revalidate, max-age=0"; }
这样访问/npm-logs会自动跳转到/npm-logs/,匹配正确的目录索引规则。
2. 检查并调整SELinux策略
RHEL/CentOS系统中,SELinux默认会阻止Nginx读取/tmp目录,即使文件权限正常:
- 临时关闭SELinux测试:
若访问正常,说明SELinux是限制因素。setenforce 0 - 永久允许Nginx读取用户内容:
setsebool -P httpd_read_user_content 1
3. 清理浏览器缓存
访问日志中的304响应说明浏览器缓存了旧内容,需清理缓存或使用无痕模式测试新配置。
4. 重启Nginx应用配置
systemctl restart nginx
内容的提问来源于stack exchange,提问作者Ashar
相关产品推荐
相关产品推荐

