Sikkepitje.nl

Sikkepitje.nl

this private cloud

NGINX

20150902

NGINX is een open-source high-performance proxy server en web server.

Dit zijn de stappen uitgevoerd op een PC met Linux Mint (de oude Gaia mini PC), zonder succes. nu opnieuw uitgevoerd op virtuele BCNGX1 in 20150902.

sudo apt-get install nginx

Userdir!

Stackoverflow: nginx, php-fpm and tilde user directories

Bewerk /etc/nginx/sites-enabled/default en voeg toe in server {} :

location ~ ^/~(.+?)(/.*)?$ {
 alias /home/$1/public_html$2;
 index  index.html index.htm;
 autoindex on;
}

Userdirs heb ik hier niet nodig..

Via http://ip/~user serveren we de bestanden in /home/user/public_html .

PHP

bron

We gebruiken PHP met FastCGI Process Manager

 sudo apt-get install php5-fpm

We need to make one small change in the php configuration.Open up php.ini:

 sudo nano /etc/php5/fpm/php.ini

Find the line, cgi.fix_pathinfo=1, and change the 1 to 0.

 cgi.fix_pathinfo=0

en ook meteen timezone

 date.timezone ="Europe/Amsterdam"

Nu herstart pph-fpm

 service php5-fpm reload

APC is a free and open PHP opcode cacher for caching and optimizing PHP intermediate code

 sudo apt-get install php-apc

Nu het relevante stuk in /etc/nginx/sites-enabled/default geplakt:

location ~ \.php$ {
	fastcgi_split_path_info ^(.+\.php)(/.+)$;
	# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

	# With php5-fpm:
	fastcgi_pass unix:/var/run/php5-fpm.sock;
	fastcgi_index index.php;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	include fastcgi_params;
}

Start nginx opnieuw om wijzigingen door te voeren

 sudo service nginx restart

Om te testen, maak een testbestand , noem het /var/www/test.php met dit

<?php 
  phpinfo();
?>

en roep het op in de browser met http://{hostname}/test.php

PHP deel 2

Een ander stukje configuratie voor PHP houdt rekening met een zekere exploit

location ~ ^/~(.+?)(/.*\.php)$ {
	alias /home/$1/public_html;
	autoindex on;
	include /etc/nginx/fastcgi_params;

	try_files $2 = 404; # Prevents exploit
	fastcgi_pass unix:/var/run/php5-fpm.sock;
	fastcgi_index index.php;
}

Bron

@]

multitail

Handig voor bekijken van real-time logfiles van nginx.

 sudo apt-get install multitail

Maak script in ~/bin en noem dit bijv nginxlog:

multitail /var/log/nginx/{access,error}.log

403 Forbidden

Ik heb een simpele webroot-dir gemaakt /home/paul/wwwroot met een index.html en ik krijg steeds "403 Forbidden" errors. Redenen hiervoor zijn verschillend: de folder owner was geen www-data, files hebben mode 700 of er was stiekem toch geen index.html.

IP whitelist

Gebruik deny en allow statements. Alle regels worden vanaf het begin gecontroleerd totdat één een match krijgt met het ip-adres.

allow 127.0.0.1;
allow 192.168.0.0/16;
allow x.x.x.x;
deny all;

Je kunt bijvoorbeeld het volgende doen:

1. Maak textfile met ip-adressen

allow 192.168.1.1;
allow 10.0.0.1;

En include deze in de config:

server {
    include /var/www-allow/client1-allow.conf;
    deny all;
}

Bronnen