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. 链接格式:确保链接格式正确,没有多余的空格或特殊字符。

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

相关推荐
Avan_菜菜9 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
DigitalOcean9 天前
Laravel 开发者已在 DigitalOcean 上开通超过 10 万台服务器
前端·laravel
两个人的幸福11 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
ping某13 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
BingoGo13 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack13 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820714 天前
PHP 扩展——从入门到理解
php
鹏仔先生15 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下15 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip15 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua