首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用symfony3服务远程静态文件

使用symfony3服务远程静态文件
EN

Stack Overflow用户
提问于 2017-01-18 13:21:34
回答 2查看 418关注 0票数 8

我的Nginx配置有问题。我有两个服务器,一个带有nginx,一个带有webApp in symfony3。这是我的配置:

代码语言:javascript
复制
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是如何工作的,无法指示静态文件是什么,并“告诉”我的代理它们不是脚本。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-20 23:21:00

try_files指令自动尝试查找静态文件,并在放弃之前将它们作为静态文件提供,并让请求充当脚本。

  • files 以指定的顺序检查文件的存在,并使用第一个找到的文件进行请求处理;处理在当前上下文中执行。文件的路径是根据根指令和别名指令从file参数构造的。可以通过在名称的末尾指定斜杠来检查目录的存在,例如“$uri/”。如果没有找到任何文件,则会对最后一个参数中指定的uri进行内部重定向。

请注意,虽然您已经在使用try_files,但您的路径处理似乎不符合规范。

至于您自己使用临时解决方案的答案,there's nothing wrong with using a rewrite or two,但尽管如此,看起来您将从alias指令中受益。

  • http://nginx.org/r/alias 定义指定位置的替换。

但是,您从未解释过为什么要在/tmp之外提供服务。注意,/tmp通常是由一些cron脚本自动清除的,例如,在OpenBSD上,/etc/daily脚本将自动地find和删除超过7天的文件(顾名思义, basis)。

--总之,,您应该首先弄清楚文件系统的web视图和您的文件系统之间的适当映射是什么。

随后,如果找到前缀,只需为资产使用单独的locationalias

否则,找出try_files按预期工作的路径。

票数 7
EN

Stack Overflow用户

发布于 2017-01-19 09:16:59

在任何人找到更好的解决方案之前,我已经找到了一个非常丑陋的解决方案,以下是我所做的:

  • 我已经复制了所有的资产存储库,并将其复制到代理服务器( nginx所在的地方)。

下面是我的新配置:

代码语言:javascript
复制
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和图片都被找到了。

如果有人想到一个“更干净”的答案,我们非常欢迎他回答。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41720580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档