Macchine Linux Mr.Digital: differenze tra le versioni

Da Webmobili Wiki.
Riga 168: Riga 168:
* https://www.youtube.com/watch?v=V9XGT7hvwWo
* https://www.youtube.com/watch?v=V9XGT7hvwWo
* https://docs.nginx.com/nginx/admin-guide/security-controls/securing-http-traffic-upstream/<br/>
* https://docs.nginx.com/nginx/admin-guide/security-controls/securing-http-traffic-upstream/<br/>
===== Testing con Apache Bench =====
Suppose we want to see how fast Yahoo can handle 100 requests, with a maximum of 10 requests running concurrently:
<syntaxhighlight lang="bash">
ab -n 100 -c 10 -l http://www.yahoo.com/
</syntaxhighlight>
Nota bene: Se non si mette l'ultimo slash (/) il comando non funziona.
https://www.petefreitag.com/item/689.cfm


==== Protocollo http2 ====
==== Protocollo http2 ====

Versione delle 15:03, 15 feb 2024

Le nostre macchine Linux sono

  • MERIDA
  • MULAN
  • POCAHONTAS
  • JARVIS
  • ULTRON

Merida

Ospita i mini siti e tutte le istanze Wordpress di Designbest (webmobili, magazine, outlet).

Manutenzione

Al momento esegue una Debian 12.

Multiple versioni di PHP

A causa della presenza di diversi siti, la macchina può eseguire diverse versioni di PHP, tramite PHP FPM
PHP FPM - Configurare multiple versioni di PHP.
Ad esempio,

  • al momento (febbraio 2024) Wordpress non è ancora pronto ad accogliere pienamente PHP8, ma solo PHP7.4 (fonte)
  • il programma dei rimborsi è stato fatto in PHP5 e non guarisce più.

A causa dei limiti di Wordpress, abbiamo configurato Apache per l'utilizzo di PHP 7.4 di default.

Configurazione PHP per Wordpress

A causa della presenza di più istanze Wordpress abbiamo convenuto di modificare i valori di /etc/php/7.4/fpm/php.ini nel seguente modo

upload_max_filesize = 128M
post_max_size = 256M
max_execution_time = 900
max_input_vars = 5000
memory_limit = 2048M
max_input_time = 400

Problema PhpMyAdmin

Siccome abbiamo impostato Apache che utilizzi di default la versione PHP7.4,
Quando si installa phpmyadmin su Debian 12, ovviamente è impostato per funzionare con PHP8 e quindi restituisce un errore 500.
Per rimediare al bug bisogna andare nel file di configurazione a dirgli di utilizzare la versione 8 invece di usare la default.
Editare /etc/apache2/conf-avalaible/phpmyadmin.conf e aggiungere queste righe all'interno di <Directory>

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost"
</FilesMatch>


Mulan

È un reverse-proxy che ha il compito di controllare il flusso delle richieste gestendo eventuali attacchi DDOS prima di passare la palla ad IIS sulla macchina ARIEL.
Oltre a questo si occupa della compressione e caching delle risorse.
Al momento si pone di fronte al solo Designbest.

NGINX

Configurazione Virtual Host

upstream www.designbest.com {
	server 192.168.250.10:443;
}
upstream designbest.com {
	server 192.168.250.10:80;
}
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;

##
# DESIGNBEST.COM 
#

# Porta 80, forwardo e lascio gestire redirect da IIS
server {
	listen 80;

	server_name designbest.com www.designbest.com;

	#access_log /var/log/nginx/dbdemo47.com/access.log;
	error_log /var/log/nginx/designbest.com/error.log;

	location ~ ^/(it|fr|de|en) {
		limit_req zone=mylimit burst=20 nodelay;
		proxy_pass http://designbest.com;
		include /etc/nginx/proxy_params;
		limit_req_status 429;
	}

	location / {
		proxy_pass http://designbest.com;
		include /etc/nginx/proxy_params;
	}
}

# Porta 443
server {
	if ($host = designbest.com) {
		return 301 https://www.$host$request_uri;
	}

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

	index index.html index.htm index.nginx-debian.html;
	server_name designbest.com www.designbest.com;

	# upload che di default è 1M
	client_max_body_size 100M;

	ssl_certificate /etc/nginx/ssl/designbest.com_ssl_certificate_bundle.crt;
	ssl_certificate_key /etc/nginx/ssl/designbest.com_private_key.key;

	error_log /var/log/nginx/designbest.com/error.log;
	#access_log /var/log/nginx/designbest.com/access.log;

	location ~ ^/(it|fr|de|en) {
		limit_req zone=mylimit burst=20 nodelay;
		proxy_ssl_server_name on;
		proxy_pass https://www.designbest.com;
		include /etc/nginx/proxy_params;
		limit_req_status 429;
	}

	location / {
		proxy_ssl_server_name on;
		proxy_pass https://www.designbest.com;
		include /etc/nginx/proxy_params;
	}
}


##
# IMMAGINI.DESIGNBEST.COM
#
server {
	# SSL configuration
	#
	listen 443 ssl;
	listen [::]:443 ssl;

	#root /var/www/html;

	index index.html index.htm index.nginx-debian.html;

	server_name immagini.designbest.com;

	ssl_certificate /etc/nginx/ssl/designbest.com_ssl_certificate_bundle.crt;
	ssl_certificate_key /etc/nginx/ssl/designbest.com_private_key.key;

	error_log /var/log/nginx/immagini.designbest.com/error.log;
	#access_log /media/discodati/logs/immagini.designbest.com/access.log;

	location ~ ^/(it|fr|de|en) {
		limit_req zone=mylimit burst=20 nodelay;
		proxy_ssl_server_name on;
		proxy_pass https://www.designbest.com;
		include /etc/nginx/proxy_params;
		limit_req_status 429;
	}

	location / {
		proxy_ssl_server_name on;
		proxy_pass https://www.designbest.com;
		include /etc/nginx/proxy_params;
	}
}

Questa guida mostra come NGINX può integrare il controllo del flusso.

Testing con Apache Bench

Suppose we want to see how fast Yahoo can handle 100 requests, with a maximum of 10 requests running concurrently:

ab -n 100 -c 10 -l http://www.yahoo.com/

Nota bene: Se non si mette l'ultimo slash (/) il comando non funziona. https://www.petefreitag.com/item/689.cfm

Protocollo http2

Il nuovo nginx supporta nativamente il protocollo http2.
Basta aggiungere http2 dietro all'istruzione listen 443 ssl

listen 443 ssl http2;

Compressione Brotli

La nuova compressione che va a sostituire la classica gzip
è stata approfondita nell'apposito paragrafo Nginx modulo Brotli (text compression)