laravel php artisan storage:link 后通过nginx代理访问图片404 not found问题

laravel php artisan storage:link 后通过nginx代理访问图片404 not found问题

文章目录

提出问题

在使用 laravel 框架的 php artisan storage:link 命令创建软连接后,访问图片,直接访问没有问题,但是通过代理(如下代码)访问,就会提示:404 not found。

        location /digital-api/ {
                proxy_pass http://192.168.1.99:83/;
        }

解决方案

经过排查发现,访问图片地址被当做接口请求了,这就意味着 nginx 代理匹配出现了问题,没有匹配到正确的代理路径,代理配置需要做如下更改:

        location ^~ /digital-api/ {
                proxy_pass http://192.168.1.99:83/;
        }

分析说明

在询问 AI 之后,解释如下:

在 Nginx 配置中,^~ 是一个特殊的字符,它的作用是指定一个最长匹配的 location。当 Nginx 处理请求时,它会查找与请求 URI 最长匹配的 location,并使用该 location 进行处理。如果没有找到精确匹配的 location,Nginx 会使用具有 ^~ 前缀的最长匹配 location。

^~ 的作用

  • 最长匹配^~ 确保 Nginx 使用最长的非正则表达式 location 匹配。如果没有 ^~,Nginx 可能会选择一个较短的匹配,这可能导致请求被错误地路由。
  • 优先级 :在有多个 location 块可以匹配同一个请求时,带有 ^~ 的 location 块会优先于没有 ^~ 的正则表达式 location 块。

为什么需要 ^~

在您的配置中:

nginx 复制代码
location ^~ /digital-api/ {
    proxy_pass http://192.168.1.99:83/; 
}
  • 没有 ^~ 的情况 :如果请求的 URI 是 /digital-api/some/path/to/image.png,Nginx 可能会找到一个更短的匹配(例如 location /),并使用该 location 处理请求,导致请求被错误地代理或返回 404。
  • ^~ 的情况 :使用 ^~ 确保 Nginx 优先使用 /digital-api/ 这个最长匹配的 location,即使有其他更通用的 location 块(如 location /)存在。这样,请求就会被正确地代理到 http://192.168.1.99:83/digital-api/some/path/to/image.png

解决方案

确保您的 Nginx 配置中使用了 ^~ 来指定最长匹配的 location,这样可以确保请求被正确地路由到预期的后端服务。如果您的后端服务需要处理特定的路径或需要特定的 header,确保这些配置在正确的 location 块中设置。

检查网页链接的合法性

如果访问 http://192.168.1.99:83/ 时遇到问题,可能是因为网络问题或链接本身的问题。请检查以下几点:

  1. 网络连接 :确保您的设备可以访问 192.168.1.99 这个 IP 地址。
  2. 服务状态 :确保 192.168.1.99 上的端口 83 上的服务正在运行。
  3. 防火墙设置:检查是否有防火墙规则阻止了对该端口的访问。
  4. 链接格式:确保链接格式正确,没有多余的空格或特殊字符。

如果问题仍然存在,可能需要进一步的网络诊断或联系网络管理员。
******************************** 只要思想不滑坡,办法总比困难多********************************

相关推荐
黑客Ela1 小时前
网络安全问题概述
安全·web安全·php
Wh1teR0se1 小时前
详解php://filter--理论
web安全·php
DC_BLOG1 小时前
Linux-Nginx虚拟主机
linux·运维·nginx
Stara05111 小时前
Git推送+拉去+uwsgi+Nginx服务器部署项目
git·python·mysql·nginx·gitee·github·uwsgi
oushaojun25 小时前
ubuntu中使用ffmpeg和nginx推流rtmp视频
nginx·ubuntu·ffmpeg·rtmp
李钢蛋6 小时前
PHP函数---function_exists()详解
开发语言·php
不如喫茶去6 小时前
PHP将图片合成gif动图
php·php生成gif·图片生成gif·合成gif
ladymorgana7 小时前
【Nginx从入门到精通】05-安装部署-虚拟机不能上网简单排错
网络·nginx·智能路由器
全栈小58 小时前
【PHP】部署和发布PHP网站到IIS服务器
服务器·开发语言·php
饮啦冰美式9 小时前
php如何定位问题
开发语言·php