yum install lighttpd lighttpd-fastcgi -y
vim /etc/lighttpd/lighttpd.conf
server.username = "lighttpd"
server.groupname = "lighttpd"
server.use-ipv6 = "disable"
server.max-fds = 2048
server.max-fds Lighttpd is single-threaded server, its main resource limit is the number of file descriptors, which is set to 1024 by default (on most systems). To handle high traffic site set this to 2048.
ctrl-G in vim and Uncomment following line by removing starting # symbol.
include_shell "cat /etc/lighttpd/vhosts.d/*.conf"
If you prefer that lighttpd doesn't report its version number the server.tag should be set to just lighttpd:
server.tag = "lighttpd"
The next statement will return a 403 to every request that does not match any of the hosted domains domain1 and domain2 (instead of 404):
$HTTP["host"] !~ "(^|\.)domain1$|(^|\.)domain2$" {
url.access-deny = ( "" )
}
debug.log-request-handling = "enable"
#redirect all http to https
$HTTP["host"] !~ "^(demo|faq|help|forums|mail|www)\.(myhost\.com)$" {
$HTTP["host"] =~ "^(.+\.)?(myhost\.com)$" {
$HTTP["scheme"] == "http" {
#capture vhost name with regex conditiona -> %0 in redirect pattern must be the most inner block to the redirect rule
$HTTP["host"] =~ ".*" {
url.redirect = (".*" => "https://%0$0")
}
}
}
}
#ssl cert configuration
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/ssl/myhost.com.pem"
#ssl.ca-file = "/etc/lighttpd/ssl/CA_issuing.crt"
setenv.add-environment = (
"HTTPS" => "on"
)
}
#enable php fastcgi
fastcgi.server += ( ".php" => ### PHP-FPM Support
((
"host" => "127.0.0.1",
"port" => "9000",
"broken-scriptfilename" => "enable"
))
)
vim /etc/lighttpd/modules.conf
Uncomment the modules that you like to have enabled:
server.modules = (
"mod_access",
"mod_alias",
"mod_auth",
# "mod_evasive",
"mod_redirect",
"mod_rewrite",
# "mod_setenv",
# "mod_usertrack",
"mod_simple_vhost",
"mod_fastcgi"
)
vim /etc/php.d/php.ini
archlin /etc/php/php.ini
for the following statement and change/add it in case it is missing/unset:
cgi.fix_pathinfo = 1
Otherwise fastcgi will not work.
vim /etc/lighttpd/vhosts.d/myhost.com.conf
$HTTP["host"] == "myhost.com" {
server.document-root = "/srv/www/myhost.com/public_html"
server.errorlog = "/srv/www/myhost.com/log/myhost.com-error.log"
accesslog.filename = "/srv/www/myhost.com/log/myhost.com-access.log"
}
/etc/lighttpd/vhosts.d/dev.myhost.com.conf
$HTTP["host"] == "dev.myhost.com" {
server.document-root = "/srv/www/dev.myhost.com/public_html"
server.errorlog = "/srv/www/dev.myhost.com/log/dev.myhost.com-error.log"
accesslog.filename = "/srv/www/dev.myhost.com/log/dev.myhost.com-access.log"
url.rewrite-once = ( "^/$" => "/index.php?route=common/home" )
url.rewrite-if-not-file = ( "^/(.*)" => "/index.php?_route_=$1" )
}
In the file /etc/php.ini check if expose_php is disabled to prevent that PHP will provide to much information to the ouside world:
expose_php = Off
After making the configuration changes the directory for the fastcgi socket needs to be created
useradd lighttpd
mkdir -p /srv/www
mkdir /var/run/lighttpd
chown -R lighttpd:lighttpd /var/run/lighttpd
chown -R lighttpd:lighttpd /var/log/lighttpd
and permission for some directories need to be corrected as these belong to apache by default. These files can be found with the find command:
find / -user apache
find / -group apache
Change owner and/or user apache to lighttpd:
chown -R lighttpd:lighttpd /srv/www
in php.ini
mkdir /var/lib/php/session -p
session.save_path = "/var/lib/php/session"
chown root:lighttpd /var/lib/php/session
vim /etc/php-fpm.d/www.conf
or archlinux
vim /etc/php/php-fpm.d/www.conf
user = lighttpd
group = lighttpd
mkdir /etc/lighttpd/ssl/
cd /etc/lighttpd/ssl/
openssl req -new -newkey rsa:2048 -nodes -keyout myhost.com.key -out myhost.com.csr
After creating CSR, Request an SSL certificate from any certificate providers like Geotrust, Comodo, Digicert or GoDaddy etc. or create a self signed certificate for internal use. We do not recommend this for production sites.
openssl x509 -req -days 365 -in myhost.com.csr -signkey myhost.com.key -out myhost.com.crt
Now create pem file by combining key file and certificate in one file
cat myhost.com.key myhost.com.crt > myhost.com.pem
save then test configuration
lighttpd -t -f /etc/lighttpd/lighttpd.conf
service nginx stop
service lighttpd start
service php-fpm restart
chkconfig nginx off
chkconfig lighttpd on