我的Nginx配置有问题.我有2台服务器,一台使用nginx,另一台使用我的webApp在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如何工作来指示什么是静态文件并"告诉"我的代理他们不是脚本.
该try_files
指令自动尝试查找静态文件,并在放弃之前将它们作为静态文件提供,并将请求作为脚本提供.
http://nginx.org/r/try_files
检查指定顺序的文件是否存在,并使用第一个找到的文件进行请求处理; 处理在当前上下文中执行.根据root和alias指令从文件参数构造文件的路径.可以通过在名称末尾指定斜杠来检查目录的存在,例如"$ uri /".如果未找到任何文件,则会进行内部重定向到最后一个参数中指定的uri.
请注意,虽然您已经在使用try_files
,但似乎您的路径处理可能不符合规范.
至于你自己的临时解决方案的答案,使用重写或两个都没有错,但是说,看起来你会从alias
指令中受益.
http://nginx.org/r/alias
定义指定位置的替换.
但是,你从未解释过为什么要提供服务/tmp
.请注意,/tmp
往往是通过自动清除一些cron
脚本,例如,在OpenBSD,该/etc/daily
脚本将自动find
和删除文件超过7天以上(一个在daily
基础,顾名思义).
总之,您应该首先弄清楚文件系统的Web视图和文件系统之间的适当映射是什么.
随后,如果找到前缀,则只需使用单独location
的资产alias
.
否则,找出try_files
按预期工作的路径.