我的Nginx配置有问题。我有两个服务器,一个带有nginx,一个带有webApp in symfony3。这是我的配置:
location /portal/mysite/ {
set $frontRoot /srv/data/apps/mysite-portal-stag/current/web;
set $sfApp app.php; # Change to app.php for prod or app_dev.php for dev
root /srv/data/apps/mysite-portal-stag/current/web;
rewrite ^/portal/mysite/(.*)$ /$1 break;
try_files $uri @sfFront;
}
location @sfFront {
root /srv/data/apps/mysite-portal-stag/current/web;
fastcgi_pass myserver:myport;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $frontRoot/$sfApp;
fastcgi_param SCRIPT_NAME /portal/mysite/$sfApp;
}webSite适用于所有php脚本,但所有资产(静态文件)都是损坏的文件。我不太明白Nginx是如何工作的,无法指示静态文件是什么,并“告诉”我的代理它们不是脚本。
发布于 2017-01-20 23:21:00
try_files指令自动尝试查找静态文件,并在放弃之前将它们作为静态文件提供,并让请求充当脚本。
请注意,虽然您已经在使用try_files,但您的路径处理似乎不符合规范。
至于您自己使用临时解决方案的答案,there's nothing wrong with using a rewrite or two,但尽管如此,看起来您将从alias指令中受益。
但是,您从未解释过为什么要在/tmp之外提供服务。注意,/tmp通常是由一些cron脚本自动清除的,例如,在OpenBSD上,/etc/daily脚本将自动地find和删除超过7天的文件(顾名思义, basis)。
--总之,,您应该首先弄清楚文件系统的web视图和您的文件系统之间的适当映射是什么。
随后,如果找到前缀,只需为资产使用单独的location和alias。
否则,找出try_files按预期工作的路径。
发布于 2017-01-19 09:16:59
在任何人找到更好的解决方案之前,我已经找到了一个非常丑陋的解决方案,以下是我所做的:
下面是我的新配置:
location /portal/mysite/ {
set $frontRoot /srv/data/apps/mysite-portal-stag/current/web;
set $sfApp app.php;
root /srv/data/apps/mysite-portal-stag/current/web;
rewrite ^/portal/mysite/(.*)$ /$1 break;
try_files $uri @sfFront;
}
location /portal/mysite/asset {
root /tmp/mysite/asset;
rewrite ^/portal/mysite/asset/(.*)$ /$1 break;
}
location @sfFront {
set $frontRootWeb /srv/data/apps/mysite-portal-stag/current/web;
root /srv/data/apps/mysite-portal-stag/current/web;
fastcgi_pass myAdressWeb:myPort;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $frontRoot/$sfApp;
fastcgi_param SCRIPT_NAME /portal/mysite/$sfApp;
} 现在它开始工作了,所有的js/css和图片都被找到了。
如果有人想到一个“更干净”的答案,我们非常欢迎他回答。
https://stackoverflow.com/questions/41720580
复制相似问题