华夏ERP 部署后上传图片后访问 nginx 404
在对 华夏ERP 二次开发部署后,商品的图片上传后访问 nginx 404
。查看图片上传接口 upload 是成功的,服务器上也能找到文件上传配置地址 file.path
下的图片文件。但图片预览不出来:
本地测试没有问题,查询项目日志没有显示。怀疑是 nginx 服务器本身做了拦截,因为华夏ERP中的上传图片访问是通过后台接口读取并输出流文件的,如果访问接口报 404 应该会有日志。
官方 通过宝塔部署的文档 给到的配置为:
# 给nginx配置文件增加如下内容,改完之后重启nginx。注意: gzip 配置可以提高系统访问速度。
server {
listen 3000;
server_name localhost;
gzip on;
gzip_min_length 100;
gzip_types text/plain text/css application/xml application/javascript;
gzip_vary on;
location / {
root /home/jshERP/jshERP-web;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /jshERP-boot/ {
proxy_pass http://localhost:9999/jshERP-boot/;
proxy_set_header Host $host:$server_port;
}
}
这边是把 这些配置内容修改、增加到宝塔站点的配置文件中的,没有清除原来的一些配置(这里就是后面发现的问题所在)。
通过测试发现,图片后缀为大写的文件上传后可以正常访问,比如:JPG
、PNG
。这加深了我对于 nginx 拦截了图片请求的怀疑。找到一处对于图片过期时间的配置:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
并没有看出来有什么问题,但为了确认问题,还是注释掉测试了一下。然后就图片可以正常访问了。
所以 location /jshERP-boot/
的请求被这个 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
拦截了,因为它去正常的判断图片是否存在,然而图片不存在(通过后台接口返回输出) nginx 就返回了 404。