我遇到了使用xsendfile和我的Rails 3应用程序的问题。带符号链接的mod_xsendfile
我正在使用capistrano管理部署,并且在每个版本中都有一个共享/资产目录的符号链接(例如/ var/www/site/releases/1234/assets =>/var/www/site /共享/资产)。问题是XSendFile似乎没有遵循符号链接。在我的Apache日志,我看到下面的错误:
The given path was above the root path: xsendfile: unable to find file: /var/www/site/releases/20110406205607/assets/pdfs/2/original/test.pdf
我已在XSendFilePath配置设置为
XSendFilePath /var/www/site/shared/assets
如果我切换config来:
XSendFilePath /var/www/site/releases
那么一切工作正常。所以我有几个问题:
1)有没有办法使XSendFilePath遵循符号链接?
2)将XSendFilePath设置为我的发行版目录是否存在安全风险?换句话说,我是否可以打开所有目录的访问权限?
task :storage_link, :except => { :no_release => true } do
run "ln -nFs #{deploy_to}/shared/assets #{latest_release}/assets"
end
这使得XSendFilePath看到该链接为/var/www/site/current/assets
这使它的根路径内:
感谢您的回答。我已经从这个项目中走了出来,但你的答案肯定是有道理的。 – bostonou 2011-08-12 19:16:17
直到使用'Pathname#realdirpath'解析符号链接时,这对我们才有用。 – 2013-05-03 21:33:10
它不适用于我,即使使用'路径名#realdirpath' :( – wrzasa 2015-03-04 14:48:05