我有一个PHP项目,一个REST API。 Nginx配置适用于API,但不适用于上传的图片
图片总是返回404错误
项目从 / public 目录开始,上传目录位于public内部,因此图像访问URL类似于:
DOMAIN.COM/upload/201812/20181204133821.jpg
NGINX的实际配置是
result = [l + l[-1].split('@') for l in list1]
因此,API从 / public 目录开始,并且图像被上传到 / public / upload /
也。服务器上的Nginx错误日志显示:
server {
listen 80;
listen [::]:80;
set $root_path '/usr/share/nginx/html/api/public';
root $root_path;
index index.php index.html index.htm;
server_name api-eduplus.blanco-estudio.com;
#try_files $uri $uri/ @rewrite;
try_files $uri $uri/ /index.php?q=$uri&$args;
location ~* \.(jpg|jpeg|png|gif)$ {
root $root_path;
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
#error_log logs/error.log warn;
}
请帮助,我实际上被困住了
答案 0 :(得分:0)
我刚刚在服务器上解决了这个问题。错误的原因是符号链接。
我刚在服务器的nginx配置上遇到了此(不是很清楚)错误消息:
"/path/to/index.html" is not found (20: Not a directory)
经过反复试验,我确定实际原因是nginx无法访问站点的文档根目录,因为到root
的路径的一部分包含符号链接,但是我有{{1 }}设置在我的主要disable_symlinks on;
文件中。
注释掉nginx.conf
行或将其更改为disable_symlinks on;
可解决此问题。
另请参阅: