Come aumentare l’upload size di PHP con nginx

Lo so che sarà capitato anche voi di volerlo modificare e non aver voglia d’andare a leggere la documentazione. Ne di PHP e ne di nginx.

Ecco a voi come farlo, in modo semplice e veloce:

sudo nano /etc/nginx/nginx.conf
aggiungete le due righe:
client_max_body_size 100M;
fastcgi_read_timeout 3000;
sudo nano /etc/nginx/sites-enabled/default
aggiungere dentro location ~ \.php$:
fastcgi_read_timeout 3000;

Poi in base alla versione di php che avete, cambiate il path qui sotto:

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

Mettete a 100M:

post_max_size
upload_max_filesize
sudo nano /usr/share/phpmyadmin/libraries/config.default.php

E mettere invece di 300:

$cfg['ExecTimeLimit'] = 0;
sudo service php7.0-fpm restart
sudo service nginx reload
Photo by Compare Fibre on Unsplash

Come installare nginx con Docker

Come potrete aver ben notato, spesso ho preferito nginx ad Apache per una miriade di progetti in quanto è molto più leggero e ha una configurazione (secondo il mio parere) più semplice rispetto alla controparte. Ovvio che come al solito contano le preferenze personali, perché oramai in termini di esigenze… direi che si eguagliano in termini di funzionalità.

Se volete creare il vostro webserver in modo semplice e veloce, ecco a voi:

docker run -v /home/nginx:/usr/share/nginx/html:ro -p 32769:80 --restart unless-stopped -d nginx

Se volete crearne altri 2 o altri 100, vi basterà eseguire lo stesso comando, semplicemente cambiando la porta 32769 (scelta a random). Così d’avere tutti i siti web, statici o dinamici che siano in un men che non si dica!

Come configurare Fail2ban con nginx

Se avete installato Fail2ban e volete utilizzarlo con nginx invece di Apache, come indicato nella mia guida. Seguite questi semplici passaggi:

sudo nano /etc/fail2ban/jail.local

Modificate il file:

[nginx-http-auth]

enabled  = true
filter   = nginx-http-auth
port     = http,https
logpath  = /var/log/nginx/error.log

Se invece volete inserire altre opzioni, seguite questo articolo di DigitalOcean.

Come configurare Let’s Encrypt con nginx

La procedura è davvero easy, vi basterà installare certbot con:

sudo apt install certbot

Una volta installato eseguite:

sudo certbot certonly

Dovrebbe in automatico generarvi un certificato (seguite i passaggi e inserite mail e dominio). E una volta terminato i due file dovrebbero trovarsi qui:

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Ora modificate il file di configurazione di nginx:

sudo nano /etc/nginx/sites-available/default

E dovrete fare in modo che la porta 80 faccia un redirect alla 443 e aggiungere un server alla 443:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    include snippets/ssl-example.com.conf;
    include snippets/ssl-params.conf;
}

Ovviamente dovrete anche controllare che il vostro firewall permetta TCP alla porta 443, nel caso usiate iptables (qui per vedere l’elenco):

sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Controllate che sia tutto ok su nginx con:

sudo nginx -t

Se passate il test, eseguite:

sudo service nginx restart

Per rinnovare il certificato vi basterà eseguire:

sudo cerbot renew

Mentre se volete che sia automatizzato con crontab:

sudo crontab -e

Ed incollate:

30 2 * * * /usr/bin/certbot renew --noninteractive --renew-hook "/bin/systemctl reload nginx" >> /var/log/le-renew.log

Come rimuovere la stringa “?m=1” dagli url

Indipendentemente da quale sia il vostro web server, può capitare che Google vi mandi questa bellissima email:

Nuovo problema di Copertura rilevato per il sito

Cliccate e approfondite… e scoprite che in realtà non è un vostro problema, ma è semplicemente dovuto da qualche sorta di bot o (nel caso usavate Blogger) di qualche sorta di linking che avete avuto in passato.

Se approfondendo scoprite che in realtà è semplicemente questa stringa (parametro in realtà) a darvi fastidio:

?m=1

Errore di reindirizzamento su Google Search Console

Provate a creare delle regole che ve la cancellino in automatico… su Apache vi basterà modificare il file .httaccess come segue:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^m=1$
RewriteRule ^(.*)$ /$1? [R=301,L]

Se invece utilizzate NGINX, all’interno del vostro server (probabilmente localizzato su /etc/nginx/site-avaliable/default, modificate all’interno del /location aggiungendo questo:

if ($query_string ~ "^m=1$"){
  rewrite ^(.*)$ /$1? redirect;
}

Riavviate poi il servizio di NGINX con:

sudo service nginx restart

Ora potete cliccare su Convalida correzione e aspettare che i bot di Google capiscano che non avete nessuna sorta di errore!

Come installare Apache su Raspberry Pi

Apache penso (a quanto pare è usato dal 46% dei siti web) sia il web server più famoso al mondo, quindi è d’obbligo, dopo aver visto come installare nginx su Raspberry Pi (che tra l’altro quella guida va benissimo anche per qualsiasi altra distribuzione Debian/Ubuntu).

Comunque giusto per chiarire, Apache non è solo un web server ma anche e sopratutto un’organizzazione no-profit. Se volete approfondire leggete nel loro sito web.

Andiamo al dunque, aprite il terminale o collegatevi tramite SSH ed eseguite:

sudo apt install apache2

Aspettate e… fatto! Andate su:

cd /var/www/html

E modificate il file index.html oppure createne di nuovi! Buon divertimento!

Come nascondere la versione di nginx

Nascondere la versione del vostro web server nginx, come per PHP, può essere molto utile nel caso qualcuno voglia sfruttare delle falle conosciute (anche se non vi difende da nulla, semplicemente non lo mostrate).

Andiamo diretti al sodo e modifichiamo il file di configurazione:

sudo nano /etc/nginx/nginx.conf

E dentro http aggiungete:

server_tokens off;

Ora riavviate il processo con:

sudo systemctl restart nginx

Se invece volete visualizzare la versione, seguite questi passaggi.

Come installare nginx su Raspberry Pi

Prima di tutto dovete fare una cosa importantissima, rimuovete Apache:

sudo apt remove apache2

Ora che l’avete rimosso e potete iniziare a divertirvi seriamente, installate nginx:

sudo apt install nginx

Finito. Ecco sì, finito! Avrà già configurato la cartella che usavate in precedenza e tutto quanto dovrebbe funzionarvi alla perfezione (ovviamente meglio di prima).

Nel caso, configurate quel che vi manca da qua:

sudo nano /etc/nginx/sites-available/default

Posso garantirvi personalmente, che non sentirete la mancanza. E anzi, vi domanderete perché non l’avete fatto prima!