friendica/mods/sample-Lighttpd.config

142 lines
4.8 KiB
Plaintext

Below is a sample config for Lighttpd that
seems to work well on Debian Squeeze, with "lighttpd/1.4.28 (ssl)"
The idea is: if someone enters the bare URL for my site, 'example.com',
they get redirected to https://example.com/index.html, which is simply a
page with two links on it: https://wordpress.example.com and
https://friendica.example.com.
If someone enters https://example.com, they get redirected to
https://wordpress.example.com/main/, which is the 'main' blog in a Word
Press 'network install' of the 'subdirectory' variety.
I thought it might be nice to offer people who join my Friendica
instance their own blogs, if they like.
One can obtain free, signed, single subdomain SSL certificates from
StartCom CA, which upon checking I noticed was already installed in both
Firefox and Google Chromium. Info at http://cert.startcom.org/ . So I
got one for each site, and have Lighty use the appropriate cert based on
the requested URL.
Enjoy!
On Debian Jessie with lighttpd 1.4.35-4 there was a problem encountered
between curl (which is used by Friendica in the background) and lighttp.
This problem caused requests being served with an error code of 417 in
the logs and no delivery of postings from the contacts.
One can solve the issue by adding
server.reject-expect-100-with-417 = "disable"
to the lighttpd configuratiion file (e.g. in the beginning with the
other 'server.xxx' settings.
---------------( config starts )-----------------
debug.log-request-handling = "disable"
debug.log-condition-handling = "disable"
server.modules = (
"mod_access",
"mod_alias",
"mod_compress",
"mod_redirect",
"mod_fastcgi",
"mod_rewrite"
)
server.document-root = "/var/www"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/var/run/lighttpd.pid"
server.username = "www-data"
server.groupname = "www-data"
# enable SSL
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/ssl/wordpress.pem"
ssl.ca-file = "/etc/lighttpd/ssl/ca.pem"
# fix for problem between curl and lighttpd
server.reject-expect-100-with-417 = "disable"
# Send everybody to landing page:
$SERVER["socket"] == ":80" {
$HTTP["scheme"] == "http" {
$HTTP["host"] =~ ".*" {
# This next redirect doesn't appear to ever execute in Firefox
# (sometimes, anyway -- caching issue?), but it does seem to
# reliably in Google's Chromium browser. If I change it here
# and restart Lighty, Firefox still goes to the URL in the
# last 'else' below. Or something.
Sometimes.
server.document-root = "/var/www"
url.redirect = (".*" => "https://example.com")
}
}
}
else $SERVER["socket"] == ":443" {
$HTTP["scheme"] == "https" {
$HTTP["host"] == "wordpress.example.com" {
server.document-root = "/var/www/wordpress"
ssl.pemfile = "/etc/lighttpd/ssl/wordpress.pem"
# include "wpmu-rewrites.conf"
url.rewrite-if-not-file = (
"^/(.*/)?files/$" => "/index.php",
"^/(.*/)?files/(.*)" => "/wp-includes/ms-files.php?file=$2",
"^(/wp-admin/.*)" => "$1",
"^/([_0-9a-zA-Z-]+/)?(wp-.*)" => "/$2",
"^/([_0-9a-zA-Z-]+/)?(.*\.php)" => "/$2",
"^/(.*)/?$" => "/index.php/$1"
)
}
else $HTTP["host"] == "friendica.example.com" {
server.document-root = "/var/www/friendica"
ssl.pemfile = "/etc/lighttpd/ssl/friendica.pem"
# Got the following 'Drupal Clean URL'after Mike suggested trying
# something along those lines, from http://drupal.org/node/1414950
url.rewrite-if-not-file = (
"^\/([^\?]*)\?(.*)$" => "/index.php?pagename=$1&$2",
"^\/(.*)$" => "/index.php?pagename=$1"
)
$HOST["url"] =~ "^/bin/" {
url.access.deny ( "" )
}
}
else $HTTP["host"] !~ "(friendica.example.com|wordpress.example.com)" {
server.document-root = "/var/www/wordpress"
ssl.pemfile = "/etc/lighttpd/ssl/wordpress.pem"
url.redirect = (".*" => "https://wordpress.example.com/main/")
}
}
}
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm",
"index.lighttpd.html" )
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
include_shell "/usr/share/lighttpd/use-ipv6.pl"
dir-listing.encoding = "utf-8"
server.dir-listing = "disable"
#compress.cache-dir = "/var/cache/lighttpd/compress/"
#compress.filetype = ( "application/x-javascript", "text/css", "text/html", "text/p\lain" )
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
---------------( config ends )-----------------