Nginx
From TykWiki
nginx is my new favourite webserver. This page contains my notes for when I am installing it on a new machine (well, in a new jail ofcourse).
nginx install
I generally install nginx with as few modules as possible enabled:
[tykling@vpnwiki /usr/ports/www/nginx]$ make showconfig | grep "=on"
IPV6=on "Enable IPv6"
HTTP_MODULE=on "Enable HTTP module"
HTTP_REWRITE_MODULE=on "Enable http_rewrite module"
Misc
Create logfiles folder
I like to keep my webserver logs in /usr/local/www/logs/ so that folder needs to be created:
sudo mkdir /usr/local/www/logs
php-fpm config
I use php-fpm instead of fastcgi to handle the PHP scripts. The config I use for php-fpm is below:
$ cat /usr/local/etc/php-fpm.conf [global] pid = run/php-fpm.pid log_level = error [www] listen = /var/php/php-fpm.socket user = www group = www pm = dynamic pm.max_children = 50 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35
I also create the folder /var/php/ to hold the actual socket opened by php-fpm.
nginx config
After installing nginx I replace the default config with something more sensible, like this example for a mediawiki install:
worker_processes 1;
error_log /usr/local/www/logs/error.log;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type text/plain;
log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
error_log /usr/local/www/logs/vpnwiki.ryst.cn.dom.error.log;
sendfile off;
keepalive_timeout 65;
server {
listen 80 default_server;
listen [::]:80 default_server;
access_log /usr/local/www/logs/vpnwiki.ryst.cn.dom.access.log main;
server_name wiki.tyk.nu;
root /usr/local/www/mediawiki;
client_max_body_size 5m;
client_body_timeout 60;
//mediawiki specific config
location / {
try_files $uri $uri/ @rewrite;
index index.php;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?title=$1&$args;
}
location ^~ /maintenance/ {
return 403;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/php/php-fpm.socket;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
try_files $uri /index.php;
expires max;
log_not_found off;
}
location = /_.gif {
expires max;
empty_gif;
}
location ^~ /cache/ {
deny all;
}
location /dumps {
root /usr/local/www/mediawiki/local;
autoindex on;
}
}
}
Enable stuff in rc.conf
#webserver nginx_enable="YES" php_fpm_enable="YES"