gpt4 book ai didi

php - Nginx 为静态文件代理不正确的 fastcgi_script_name

转载 作者:可可西里 更新时间:2023-10-31 22:52:11 24 4
gpt4 key购买 nike

server {
listen loc.app:80;

root /app/frontend/web;

index index.php;

location / {
try_files $uri $uri/ /index.php$is_args$args;
}

location ~ ^/admin {
proxy_pass http://127.0.0.1:81;
}

location ~* \.php$ {
#php conf
}
}

server {
listen 127.0.0.1:81;

root /app/backend/web;

index index.php;

location / {
try_files $uri $uri/ /index.php$is_args$args;
}

location ~ \.(js|css)$ {
echo "$document_root"; # /app/backend/web;

echo "$fastcgi_script_name"; # /admin/assets/569a8b41/css/bootstrap.css
############################## ISSUE ##############################
# $fastcgi_script_name must be /assets/569a8b41/css/bootstrap.css #
###################################################################
}

location ~* \.php$ {
#php conf
}
}

http://loc.app/admin - 好的
http://loc.app/admin/style.css - 返回 404

如何强制nginx正确处理静态文件?

最佳答案

js、css等静态文件与fastcgi无关

但是,由于该文件位于 /admin/assets/569a8b41/css 而您的 conf 将 /app/backend/web 作为文档根目录,那么这将永远不会被发现,你总是会得到一个 404,因为你要求 nginx 寻找 /app/backend/web/admin/assets/569a8b41/css/bootstrap.css 不存在。

由于设置的复杂性,您可以添加另一个仅供内部使用的位置 block 来处理请求的实际服务,并从原始位置 block 重定向到此。

location ~ /admin/assets/569a8b41 {
root /admin/assets/569a8b41;
}
location ~ ^/admin/(.+)\.(js|css)$ {
rewrite ^/admin/(.+)\.css$ /admin/assets/569a8b41/css/$1.css last;
rewrite ^/admin/(.+)\.js$ /admin/assets/569a8b41/js/$1.js last;
}

http://loc.app/admin/style.css 之类的请求将在 /admin/assets/569a8b41/css/style.css 中查找,并且如果存在,它将提供这个。

请注意,这假设您在 /admin/assets/569a8b41 下有单独的 cssjs 文件夹。

关于php - Nginx 为静态文件代理不正确的 fastcgi_script_name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37773753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com