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
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; }
@]
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; }