我遇到了FastCGI和Rails的一个令人沮丧的问题,即lighttpd将路由网址视为静态文件(即不将它们发送到rails,因为它认为它们是静态的)
如果我点击根路径,我会得到rails应用程序,但是只要我点击了一个带有URL结构的东西,甚至是一个与默认路径匹配的路径:controller /:action route,我从lighttpd和rails获得了404甚至没有咨询应用程序。
这是我的lighttpd.conf:
server.modules = ( "mod_rewrite", "mod_redirect", "mod_access", "mod_status", "mod_fastcgi", "mod_accesslog" )
server.document-root = "/myapp/application/public"
index-file.names = ( "index.html", "dispatch.fcgi" )
server.error-handler-404 = "/myapp/application/public/404.html"
url.access-deny = ( "~", ".inc" )
server.pid-file = "/var/run/lighttpd.pid"
server.username = "lighttpd"
server.groupname = "lighttpd"
server.errorlog = "/var/log/lighttpd/error.log"
accesslog.filename = "/var/log/lighttpd/access.log"
#### fastcgi module
fastcgi.server = (
".fcgi" => (
"myapp" => (
"socket" => "/tmp/myapp.socket",
"bin-path" => "/myapp/application/public/dispatch.fcgi",
"check-local" => "disable",
"fix-root-scriptname" => "true",
"docroot"=>"/"
)
)
)
# mimetype mapping
mimetype.assign = (...)
至于错误,我根本没有得到任何错误。 虽然,如果我打开Lighttpd中的调试,我确实看到这样的事件:
2010-01-18 23:11:18: (response.c.261) URI-path : /tracking/index
2010-01-18 23:11:18: (response.c.375) -- before doc_root
2010-01-18 23:11:18: (response.c.376) Doc-Root : /myapp/application/tracking/public
2010-01-18 23:11:18: (response.c.377) Rel-Path : /tracking/index
2010-01-18 23:11:18: (response.c.378) Path :
2010-01-18 23:11:18: (response.c.426) -- after doc_root
2010-01-18 23:11:18: (response.c.427) Doc-Root : /myapp/application/tracking/public
2010-01-18 23:11:18: (response.c.428) Rel-Path : /tracking/index
2010-01-18 23:11:18: (response.c.429) Path : /myapp/application/tracking/public/tracking/index
2010-01-18 23:11:18: (response.c.446) -- logical -> physical
2010-01-18 23:11:18: (response.c.447) Doc-Root : /myapp/application/tracking/public
2010-01-18 23:11:18: (response.c.448) Rel-Path : /tracking/index
2010-01-18 23:11:18: (response.c.449) Path : /myapp/application/tracking/public/tracking/index
2010-01-18 23:11:18: (response.c.466) -- handling physical path
2010-01-18 23:11:18: (response.c.467) Path : /myapp/application/tracking/public/tracking/index
2010-01-18 23:11:18: (response.c.523) -- file not found
2010-01-18 23:11:18: (response.c.524) Path : /myapp/application/tracking/public/tracking/index
2010-01-18 23:11:18: (response.c.205) -- splitting Request-URI
2010-01-18 23:11:18: (response.c.206) Request-URI : /myapp/application/tracking/public/404.html
任何可能出错的想法?
答案 0 :(得分:0)
虽然文档并没有真正解释server.error-handler设置的重要性,但是那里有一个很简单的时刻。
使用fcgi时,您需要确保将错误处理程序设置为重定向到fcgi dispatch,否则,它只显示404页面。
server.error-handler-404 = "/dispatch.fcgi"
现在全部修好了。