[pkg-lighttpd] Bug#395342: Debian lighttpd.conf not compatible with
"ruby on rails" app 1.1.6 when its public/image directory is
accessed
dllm70-boborosso at yahoo.com
dllm70-boborosso at yahoo.com
Thu Oct 26 13:15:34 UTC 2006
package:lighttpd
version: 1.4.13-2
Installed rails from rubygems and deployed an app. Rails app works but I couldn't access static content in (application path)/public/images even if permissions check.
lighttpd displays the app-configured 404 page and rails logs utter:
ActionController::RoutingError (Recognition failed for "/images/rails.png"):
/var/lib/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/routing.rb:522:in `recognition_failed'
/var/lib/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/routing.rb:512:in `recognize!'
/var/lib/gems/1.8/gems/rails-1.1.6/lib/dispatcher.rb:38:in `dispatch'
/var/lib/gems/1.8/gems/rails-1.1.6/lib/fcgi_handler.rb:150:in `process_request'
/var/lib/gems/1.8/gems/rails-1.1.6/lib/fcgi_handler.rb:54:in `process!'
/usr/lib/ruby/1.8/fcgi.rb:612:in `each_cgi'
/usr/lib/ruby/1.8/fcgi.rb:609:in `each'
/usr/lib/ruby/1.8/fcgi.rb:609:in `each_cgi'
/var/lib/gems/1.8/gems/rails-1.1.6/lib/fcgi_handler.rb:53:in `process!'
/var/lib/gems/1.8/gems/rails-1.1.6/lib/fcgi_handler.rb:23:in `process!'
/var/www/AreaSezione/public/dispatch.fcgi:24
In fact renaming images to something else makes content accessible (breaking the rails app). The problems seems to be in this part of debian lighttpd.conf:
#### handle Debian Policy Manual, Section 11.5. urls
#### and by default allow them only from localhost
$HTTP["host"] == "localhost" {
global {
alias.url += (
"/doc/" => "/usr/share/doc/",
"/images/" => "/usr/share/images/
)
}
dir-listing.activate = "enable"
}
if I remove it or change "images" to something else, images dir becomes accessible again (and there is much rejoicing :) ).
Of course it could be not a bug, just me misconfiguring lighttpd, or dns. DNS has an A record for the app exclusive hostname to the server ip.
$ dig areasezione.no-ip.org
; <<>> DiG 9.3.2-P1 <<>> [domainfortheapp]
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38457
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;[domainfortheapp]. IN A
;; ANSWER SECTION:
[domainfortheapp]. 60 IN A [IPfortheapp]
And here is the Not Working lighttpd.config
# Debian lighttpd configuration file
#
############ Options you really have to take care of ####################
## modules to load
# mod_access, mod_accesslog and mod_alias are loaded by default
# all other module should only be loaded if neccesary
# - saves some time
# - saves memory
server.modules = (
"mod_fastcgi",
"mod_access",
"mod_alias",
"mod_accesslog",
"mod_rewrite",
# "mod_redirect",
# "mod_status",
# "mod_evhost",
"mod_compress",
# "mod_usertrack",
# "mod_rrdtool",
# "mod_webdav",
"mod_expire",
# "mod_flv_streaming",
# "mod_evasive"
)
## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root = "/var/www/"
## where to send error-messages to
server.errorlog = "/var/log/lighttpd/error.log"
## files to check for if .../ is requested
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm" )
## Use the "Content-Type" extended attribute to obtain mime type if possible
# mimetype.use-xattr = "enable"
#### accesslog module
accesslog.filename = "/var/log/lighttpd/access.log"
## deny access the file-extensions
#
# ~ is for backupfiles from vi, emacs, joe, ...
# .inc is often used for code includes which should in general not be part
# of the document-root
url.access-deny = ( "~", ".inc" )
######### Options that are good to be but not neccesary to be changed #######
## bind to port (default: 80)
#server.port = 81
## bind to localhost only (default: all interfaces)
server.bind = "IPOFTHEAPP"
## error-handler for status 404
#server.error-handler-404 = "/error-handler.html"
#server.error-handler-404 = "/error-handler.php"
## to help the rc.scripts
server.pid-file = "/var/run/lighttpd.pid"
##
## Format: <errorfile-prefix><status>.html
## -> ..../status-404.html for 'File not found'
#server.errorfile-prefix = "/var/www/"
## virtual directory listings
dir-listing.encoding = "utf-8"
server.dir-listing = "disable"
## send unhandled HTTP-header headers to error-log
#debug.dump-unknown-headers = "enable"
### only root can use these options
#
# chroot() to directory (default: no chroot() )
#server.chroot = "/"
## change uid to <uid> (default: don't care)
server.username = "www-data"
## change uid to <uid> (default: don't care)
server.groupname = "www-data"
#### compress module
#compress.cache-dir = "/var/tmp/lighttpd/cache/compress/"
#compress.filetype = ("text/plain", "text/html")
#### status module
# status.status-url = "/server-status"
# status.config-url = "/server-config"
#### url handling modules (rewrite, redirect, access)
# url.rewrite = ( "^/$" => "/server-status" )
# url.redirect = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
#
# define a pattern for the host url finding
# %% => % sign
# %0 => domain name + tld
# %1 => tld
# %2 => domain name without tld
# %3 => subdomain 1 name
# %4 => subdomain 2 name
#
#evhost.path-pattern = "/var/www/%2/htdocs/"
#### expire module
# expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")
#### rrdtool
# rrdtool.binary = "/usr/bin/rrdtool"
# rrdtool.db-name = "/var/www/lighttpd.rrd"
## this is a hack
alias.url = ("___invalid___" => "___invalid___")
#### handle Debian Policy Manual, Section 11.5. urls
#### and by default allow them only from localhost
$HTTP["host"] == "localhost" {
global {
alias.url += (
"/doc/" => "/usr/share/doc/",
"/images/" => "/usr/share/images/"
)
}
dir-listing.activate = "enable"
}
#### variable usage:
## variable name without "." is auto prefixed by "var." and becomes "var.bar"
#bar = 1
#var.mystring = "foo"
## integer add
#bar += 1
## string concat, with integer cast as string, result: "www.foo1.com"
#server.name = "www." + mystring + var.bar + ".com"
## array merge
#index-file.names = (foo + ".php") + index-file.names
#index-file.names += (foo + ".php")
#### external configuration files
## mimetype mapping
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
## load enabled configuration files,
## read /etc/lighttpd/conf-available/README first
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
# NOTE I REMOVED FCGI stuff from conf-enabled and put it in this file
# lighttpd.conf entry to transparently add ssl
$SERVER["socket"] == "IPFORTHEAPP:443" {
ssl.pemfile = "...../key-cert.pem"
ssl.ca-file = "....../cacert.pem"
ssl.engine = "enable"
}
$HTTP["host"] =~ "(^|\.)URLFORTHEAPP$" {
server.error-handler-404 = "/dispatch.fcgi"
server.document-root = "/var/www/app/public/"
server.errorlog = "/var/www/app/log/lighttpd.error.log"
accesslog.filename = "/var/www/app/log/lighttpd.access.log"
url.rewrite = ( "^/$" => "index.html", "^([^.]+)$" => "$1.html" )
compress.filetype = ( "text/plain", "text/html", "text/css", "text/javascript" )
compress.cache-dir = "/var/www/AreaSezione/tmp/cache"
expire.url = ( "/favicon.ico" => "access 3 days",
"/images/" => "access 3 days",
"/stylesheets/" => "access 3 days",
"/javascripts/" => "access 3 days" )
fastcgi.server = ( ".fcgi" => ( "localhost" => (
"min-procs" => 1,
"max-procs" => 2,
"socket" => "/var/www/app/tmp/sockets/fcgi.socket",
"bin-path" => "/var/www/app/public/dispatch.fcgi",
"bin-environment" => ( "RAILS_ENV" => "production" )
) ) )
}
$HTTP["useragent"] =~ "^(.*MSIE.*)|(.*AppleWebKit.*)$" {
server.max-keep-alive-requests = 0
}
__________________________________________________
Do You Yahoo!?
Poco spazio e tanto spam? Yahoo! Mail ti protegge dallo spam e ti da tanto spazio gratuito per i tuoi file e i messaggi
http://mail.yahoo.it
More information about the pkg-lighttpd-maintainers
mailing list