<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>nginx &#8211; SMsoft &#8211; informatica e dintorni</title>
	<atom:link href="https://blog.smsoft.it/tag/nginx/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.smsoft.it</link>
	<description>consigli settimanali su MacOS, GNU/Linux ed Open Source</description>
	<lastBuildDate>Tue, 23 Jun 2026 18:04:18 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=63233</generator>
	<item>
		<title>cpanel: personalizzare regole nginx  per cliente</title>
		<link>https://blog.smsoft.it/2026/03/31/cpanel-personalizzare-regole-nginx-per-cliente/</link>
					<comments>https://blog.smsoft.it/2026/03/31/cpanel-personalizzare-regole-nginx-per-cliente/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 31 Mar 2026 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[cPanel]]></category>
		<category><![CDATA[nginx]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6991</guid>

					<description><![CDATA[Ho riscontrato oggi un&#8217;importante scansione verso un sito attivo su WHM/cPanel, nei log di nginx vedevo qualcosa tipo: Si tratta sicuramente di uno scanner/bot che prova URL generati automaticamente e che non esistono nel sito. Come anticipato, il sito è attivo su WHM/cPanel ed ha nginx come reverse proxy (EA4 + nginx). La soluzione più ... <a title="cpanel: personalizzare regole nginx  per cliente" class="read-more" href="https://blog.smsoft.it/2026/03/31/cpanel-personalizzare-regole-nginx-per-cliente/" aria-label="Per saperne di più su cpanel: personalizzare regole nginx  per cliente">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ho riscontrato oggi un&#8217;importante scansione verso un sito attivo su WHM/cPanel, nei log di nginx vedevo qualcosa tipo:</p>



<pre class="wp-block-code"><code>102.219.170.XXX - - &#91;30/Mar/2026:19:45:13 +0200] "GET /16/page/15/?lang=ko HTTP/1.1" 404 154085 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
103.189.194.XXX- - &#91;30/Mar/2026:19:45:13 +0200] "GET /35/page/42/?lang=ko HTTP/1.1" 404 154085 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
200.8.173.XXX - - &#91;30/Mar/2026:19:45:14 +0200] "GET /21/page/23/?lang=ko HTTP/1.1" 404 154085 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
</code></pre>



<p class="wp-block-paragraph">Si tratta sicuramente di uno scanner/bot che prova URL generati automaticamente e che non esistono nel sito. Come anticipato, il sito è attivo su WHM/cPanel ed ha <strong>nginx</strong> come <strong>reverse proxy</strong> (<strong>EA4 + nginx</strong>). </p>



<p class="wp-block-paragraph">La soluzione più efficace in questo caso è creare una regola di <strong>nginx</strong> che blocchi le richieste prima ancora di essere passate ad apache. </p>



<p class="wp-block-paragraph">Il file con le regole di nginx va posizionato in <strong>/etc/nginx/conf.d/users/[USERNAME]/</strong> e chiamato con un suffisso <strong>.conf</strong>. In questo caso specifico possiamo scrivere nel file:</p>



<pre class="wp-block-code"><code>location ~ ^/&#91;0-9]+/page/ {<br>access_log off;<br>return 444;<br>}</code></pre>



<p class="wp-block-paragraph">e poi riavviare nginx. Questo fa si che le richieste vengano direttamente chiuse senza risposta, senza scrivere log e senza avviare PHP.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/03/31/cpanel-personalizzare-regole-nginx-per-cliente/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>nginx: attivare un token per le chiamate api</title>
		<link>https://blog.smsoft.it/2025/11/11/nginx-attivare-un-token-per-le-chiamate-api/</link>
					<comments>https://blog.smsoft.it/2025/11/11/nginx-attivare-un-token-per-le-chiamate-api/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 11 Nov 2025 09:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[token]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6841</guid>

					<description><![CDATA[E&#8217; possibile utilizzare nginx come webserver ma spesso anche come reverse proxy. In modo molto semplice è possibile usare direttamente nginx per attivare la verifica sul passaggio di un parametro token sulle richieste. Nel file di configurazione del virtualhost definiamo innanzitutto il recupero del token: dove XXXXXXXXXXXXX è il nostro token che possiamo generare facilmente ... <a title="nginx: attivare un token per le chiamate api" class="read-more" href="https://blog.smsoft.it/2025/11/11/nginx-attivare-un-token-per-le-chiamate-api/" aria-label="Per saperne di più su nginx: attivare un token per le chiamate api">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">E&#8217; possibile utilizzare <strong>nginx</strong> come webserver ma spesso anche come reverse proxy. </p>



<p class="wp-block-paragraph">In modo molto semplice è possibile usare direttamente nginx per attivare la verifica sul passaggio di un parametro token sulle richieste. </p>



<p class="wp-block-paragraph">Nel file di configurazione del <strong>virtualhost</strong> definiamo innanzitutto il recupero del token:</p>



<pre class="wp-block-code"><code># Estraggo il token Bearer dall'header Authorization
map $http_authorization $bearer_token {
         default         "";
         "~*^Bearer\s+(.+)$"  $1;
}

# Mappa il token: accetta header X-API-Token, query param ?token=, oppure Authorization: Bearer
# la regex sulla seconda map usa ~* (case-insensitive), sostituire ~* con ~ per case-sensitive
map "$http_x_api_token$arg_token$bearer_token" $auth_token_valid {
        default             0;
        #"~*${SHARED_TOKEN}"  1;
        "~*XXXXXXXXXXXXX" 1;
}</code></pre>



<p class="wp-block-paragraph"> dove <strong>XXXXXXXXXXXXX</strong> è il nostro <strong>token</strong> che possiamo generare facilmente con:</p>



<pre class="wp-block-code"><code>openssl rand -hex 32</code></pre>



<p class="wp-block-paragraph">Ora nella rotta da proteggere, ipotizziamo tutto /, inseriamo la verifica del token:</p>



<pre class="wp-block-code"><code>        location / {
            # Verifica token
            if ($auth_token_valid = 0) {
                return 401 '{"error":"Unauthorized: missing or invalid token"}';
            }
...
...</code></pre>



<p class="wp-block-paragraph">e se nginx è usato come reverse proxy, inserire sotto la parte di verifica del token anche:</p>



<pre class="wp-block-code"><code>            # Rimuove il query param ?token= prima di passare al backend
            set $clean_uri $request_uri;
            # Rimuove il token dall'header verso il backend
            proxy_set_header X-API-Token "";</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Bene, ora basterà aggiungere l&#8217;header X-API-Token, ad esempio:</p>



<pre class="wp-block-code"><code>curl "https://url_sito_web" -H "X-API-Token: XXXXXXXXX"</code></pre>



<p class="wp-block-paragraph">oppure il parametro ?token= nell&#8217;url:</p>



<pre class="wp-block-code"><code>curl "https://url_sito_web?token= XXXXXXXXX"</code></pre>



<p class="wp-block-paragraph">oppure (ad esempio per Ollama) modalità OpenAI compatibile:</p>



<pre class="wp-block-code"><code>curl "https://url_sito_web" -H "Authorization: Bearer XXXXXXXXX"</code></pre>



<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">Escludere le chiamate GET ed HEAD dalla verifica token</h4>



<p class="wp-block-paragraph">Partendo dalla configurazione precedente, se volessimo escludere le chiamate di tipo GET e HEAD dalla verifica del token, potremmo modificare la configurazione come segue:</p>



<p class="wp-block-paragraph">Sotto il blocco <strong>map</strong> precedente in cui estraiamo la variabile <strong>$auth_token_valid</strong>, aggiungiamo l&#8217;estrazione di una nuova variabile <strong>$auth_is_valid</strong>:</p>



<pre class="wp-block-code"><code># Bypass auth per GET/HEAD, altrimenti controlla il token
map $request_method $auth_is_valid {
    default $auth_token_valid; # POST, PUT, DELETE, ecc. → controlla token
    GET 1; # GET → sempre autorizzato
    HEAD 1; # HEAD → sempre autorizzato (opzionale)
}</code></pre>



<p class="wp-block-paragraph">e poi modifichiamo il blocco di verifica dentro <strong>location</strong>, controllando <strong>$auth_is_valid</strong> piuttosto che <strong>$auth_token_valid</strong> così:</p>



<pre class="wp-block-code"><code>    location / {
      # Verifica token
      if ($auth_is_valid = 0) {
        return 401 '{"error":"Unauthorized: missing or invalid token"}';
      }</code></pre>



<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">Nota</h4>



<p class="wp-block-paragraph">Se bisogna escludere i GET <strong>solo su certi path</strong> e non globalmente, si può anche fare con una <code>location</code> separata:</p>



<pre class="wp-block-code"><code># Path pubblici in GET (es. /api/models, /api/tags)
location ~* ^/(api/models|api/tags) {
    limit_except GET { deny all; }  # solo GET ammesso senza token
    # ... proxy pass
}</code></pre>



<p class="wp-block-paragraph"><br>enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2025/11/11/nginx-attivare-un-token-per-le-chiamate-api/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>nginx cache server: come capire se il contenuto è recuperato dalla cache</title>
		<link>https://blog.smsoft.it/2025/10/21/nginx-cache-server-come-capire-se-il-contenuto-e-recuperato-dalla-cache/</link>
					<comments>https://blog.smsoft.it/2025/10/21/nginx-cache-server-come-capire-se-il-contenuto-e-recuperato-dalla-cache/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 21 Oct 2025 08:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[log_format]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[upstream_cache_status]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6830</guid>

					<description><![CDATA[Se avete configurato nginx come proxy cache server potrebbe esservi utile sapere se alle varie chiamate ha risposto con contenuti nuovi o recuperati dalla cache. La cosa più semplice è aprire il file nginx.conf e modificare la direttiva log_format per aggiungere anche la variabile upstream_cache_status. Ad esempio qualcosa del genere: Riavviamo nginx e poi andiamo ... <a title="nginx cache server: come capire se il contenuto è recuperato dalla cache" class="read-more" href="https://blog.smsoft.it/2025/10/21/nginx-cache-server-come-capire-se-il-contenuto-e-recuperato-dalla-cache/" aria-label="Per saperne di più su nginx cache server: come capire se il contenuto è recuperato dalla cache">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Se avete configurato nginx come proxy cache server potrebbe esservi utile sapere se alle varie chiamate ha risposto con contenuti nuovi o recuperati dalla cache.</p>



<p class="wp-block-paragraph">La cosa più semplice è aprire il file <strong>nginx.conf</strong> e modificare la direttiva <strong>log_format</strong> per aggiungere anche la variabile <strong>upstream_cache_status</strong>. Ad esempio qualcosa del genere:</p>



<pre class="wp-block-code"><code>log_format combined_custom '$remote_addr - $remote_user &#91;$time_local] "$request" '<br>'$status $body_bytes_sent "$http_referer" '<br>'"$http_user_agent" "$http_x_forwarded_for" $upstream_cache_status';</code></pre>



<p class="wp-block-paragraph">Riavviamo nginx e poi andiamo ora a controllare il file di log con &#8220;<strong>tail -f</strong>&#8221; ed alla fine di ogni riga sarà mostrata una parola chiave che ci fa capire come il contenuto è stato recuperato, es:</p>



<pre class="wp-block-code"><code>MISS – La risposta non è stata trovata nella cache ed è stata quindi recuperata da un server di origine. La risposta potrebbe quindi essere stata memorizzata nella cache.
BYPASS – La risposta è stata recuperata dal server di origine anziché essere servita dalla cache perché la richiesta corrispondeva a una direttiva proxy_cache_bypass. La risposta potrebbe quindi essere stata memorizzata nella cache.
EXPIRED – La voce nella cache è scaduta. La risposta contiene contenuti aggiornati dal server di origine.
STALE – Il contenuto è obsoleto perché il server di origine non risponde correttamente ed è stato configurato proxy_cache_use_stale.
UPDATING – Il contenuto è obsoleto perché la voce è attualmente in fase di aggiornamento in risposta a una richiesta precedente ed è configurato l'aggiornamento di proxy_cache_use_stale.
REVALIDATED – La direttiva proxy_cache_revalidate è stata abilitata e NGINX ha verificato che il contenuto corrente nella cache fosse ancora valido (If-Modified-Since o If-None-Match).
HIT – La risposta contiene contenuti validi e aggiornati direttamente dalla cache.</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2025/10/21/nginx-cache-server-come-capire-se-il-contenuto-e-recuperato-dalla-cache/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Certbot: The Requested nginx Plugin Does Not Appear to Be Installed</title>
		<link>https://blog.smsoft.it/2025/07/01/certbot-the-requested-nginx-plugin-does-not-appear-to-be-installed/</link>
					<comments>https://blog.smsoft.it/2025/07/01/certbot-the-requested-nginx-plugin-does-not-appear-to-be-installed/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 01 Jul 2025 08:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[let's encrypt]]></category>
		<category><![CDATA[ssl]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6791</guid>

					<description><![CDATA[Provando a generare un nuovo certificato con certbot di Let&#8217;s Encrypt ed usando come webserver nginx ho ottenuto questo messaggio: In questo caso basterà installare il necesario plugin e poi riprovare: verificare che il plugin sia installato su certbot: e riprovare: enjoy!]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Provando a generare un nuovo certificato con certbot di Let&#8217;s Encrypt ed usando come webserver nginx ho ottenuto questo messaggio:</p>



<pre class="wp-block-code"><code>The Requested nginx Plugin Does Not Appear to Be Installed</code></pre>



<p class="wp-block-paragraph">In questo caso basterà installare il necesario plugin e poi riprovare:</p>



<pre class="wp-block-code"><code>apt install python3-certbot-nginx</code></pre>



<p class="wp-block-paragraph">verificare che il plugin sia installato su certbot:</p>



<pre class="wp-block-code"><code>certbot plugins</code></pre>



<p class="wp-block-paragraph">e riprovare:</p>



<pre class="wp-block-code"><code>certbot --nginx</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2025/07/01/certbot-the-requested-nginx-plugin-does-not-appear-to-be-installed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>nginx: Proteggere una location e creare un file htpasswd</title>
		<link>https://blog.smsoft.it/2024/07/23/nginx-proteggere-una-location-e-creare-un-file-htpasswd/</link>
					<comments>https://blog.smsoft.it/2024/07/23/nginx-proteggere-una-location-e-creare-un-file-htpasswd/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 23 Jul 2024 08:30:00 +0000</pubDate>
				<category><![CDATA[nginx]]></category>
		<category><![CDATA[htpasswd]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6378</guid>

					<description><![CDATA[Per proteggere una location su nginx, ad esempio /curioso possiamo inserire nel file del nostro virtualhost nginx il seguente codice: Per generare i dati (username/password) per l&#8217;accesso, possiamo usare il seguente comando: enjoy!]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Per proteggere una location su nginx, ad esempio /curioso possiamo inserire nel file del nostro virtualhost nginx il seguente codice:</p>



<pre class="wp-block-code"><code>location ~ ^/curioso/.* {
        auth_basic            "Admin";
        auth_basic_user_file  /etc/nginx/nginx.htpasswd;
}</code></pre>



<p class="wp-block-paragraph">Per generare i dati (username/password) per l&#8217;accesso, possiamo usare il seguente comando:</p>



<pre class="wp-block-code"><code>printf "<code>read -p Username:\ ; echo $REPLY</code>:<code>openssl passwd -apr1</code>\n" >>  >> /etc/nginx/nginx.htpasswd</code></pre>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2024/07/23/nginx-proteggere-una-location-e-creare-un-file-htpasswd/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>nginx: loggare il corretto IP quando webserver è dietro un proxy</title>
		<link>https://blog.smsoft.it/2024/04/16/nginx-loggare-il-corretto-ip-quando-webserver-e-dietro-un-proxy/</link>
					<comments>https://blog.smsoft.it/2024/04/16/nginx-loggare-il-corretto-ip-quando-webserver-e-dietro-un-proxy/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 16 Apr 2024 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[nginx]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6284</guid>

					<description><![CDATA[Se usiamo nginx come server web e siamo dietro un bilanciatore/reverse proxy, l&#8217;IP loggato da nginx sarà quello del bilanciatore. Per loggare il corretto IP del visitatore finale dobbiamo innanzitutto recuperare l&#8217;IP del bilanciatore/proxy e lo possiamo fare velocemente dai log in /var/log/nginx. Recuperato l&#8217;IP, es 10.10.10.10, possiamo aprire il file /etc/nginx/nginx.conf ed aggiungere, nella ... <a title="nginx: loggare il corretto IP quando webserver è dietro un proxy" class="read-more" href="https://blog.smsoft.it/2024/04/16/nginx-loggare-il-corretto-ip-quando-webserver-e-dietro-un-proxy/" aria-label="Per saperne di più su nginx: loggare il corretto IP quando webserver è dietro un proxy">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Se usiamo <strong>nginx</strong> come server web e siamo dietro un<strong> bilanciatore/reverse proxy</strong>, l&#8217;IP loggato da nginx sarà quello del bilanciatore.</p>



<p class="wp-block-paragraph">Per loggare il corretto IP del visitatore finale dobbiamo innanzitutto recuperare l&#8217;IP del bilanciatore/proxy e lo possiamo fare velocemente dai log in <strong>/var/log/nginx</strong>. Recuperato l&#8217;IP, es 10.10.10.10, possiamo aprire il file <strong>/etc/nginx/nginx.conf</strong> ed aggiungere, nella sezione <strong>http{}</strong>, le seguenti direttive:</p>



<pre class="wp-block-code"><code>set_real_ip_from 10.10.10.10;<br>real_ip_header X-FORWARDED-FOR;<br>real_ip_recursive on;</code></pre>



<p class="wp-block-paragraph">ed infine riavviare:</p>



<pre class="wp-block-code"><code>systemctl restart nginx</code></pre>



<p class="wp-block-paragraph">Ora potremo controllare, nei file di log di nginx, che gli IP registrati siano quelli dei visitatori finali.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2024/04/16/nginx-loggare-il-corretto-ip-quando-webserver-e-dietro-un-proxy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Debian: Installare nginx con supporto rtmp</title>
		<link>https://blog.smsoft.it/2024/03/19/debian-installare-nginx-con-supporto-rtmp/</link>
					<comments>https://blog.smsoft.it/2024/03/19/debian-installare-nginx-con-supporto-rtmp/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 19 Mar 2024 09:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[rtmp]]></category>
		<category><![CDATA[streaming]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6242</guid>

					<description><![CDATA[Sulle distribuzioni debian il supporto rtmp su nginx non è presente nel pacchetto base. Per abilitare anche il supporto rtmp bisogna installare il pacchetto nginx-extras: Ora aggiungiamo in /etc/nginx/nginx.conf il seguente codice per vedere se il supporto rtmp è presente: e poi verifichiamo la configurazione con: nginx -t enjoy!]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Sulle distribuzioni debian il supporto rtmp su nginx non è presente nel pacchetto base. Per abilitare anche il supporto rtmp bisogna installare il pacchetto nginx-extras:</p>



<pre class="wp-block-code"><code>apt install nginx-extras libnginx-mod-rtmp</code></pre>



<p class="wp-block-paragraph">Ora aggiungiamo in /etc/nginx/nginx.conf il seguente codice per vedere se il supporto rtmp è presente:</p>



<pre class="wp-block-code"><code>rtmp {
   server {
      listen 1935; # The port where RTMP will listen on. Default = 1935.
      chunk_size 4096;
      timeout 30s;
      buflen 1s;
   }
}</code></pre>



<p class="wp-block-paragraph">e poi verifichiamo la configurazione con:</p>



<p class="wp-block-paragraph">nginx -t</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2024/03/19/debian-installare-nginx-con-supporto-rtmp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HTTPS, migliore impostazione per apache o nginx</title>
		<link>https://blog.smsoft.it/2021/11/09/https-migliore-impostazione-per-apache-o-nginx/</link>
					<comments>https://blog.smsoft.it/2021/11/09/https-migliore-impostazione-per-apache-o-nginx/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 09 Nov 2021 09:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[tls]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=5193</guid>

					<description><![CDATA[Ormai l&#8217;uso di un certificato HTTPS per il proprio sito web è diventata una funzionalità di base, i browser invogliano i visitatori a navigare solo su siti protetti da certificati HTTPS. Per l&#8217;installazione possiamo affidarci a let&#8217;s encrypt oppure a qualcuna delle azienda commerciali più note. Oggi volevo però parlarvi della configurazione e non dell&#8217;installazione. ... <a title="HTTPS, migliore impostazione per apache o nginx" class="read-more" href="https://blog.smsoft.it/2021/11/09/https-migliore-impostazione-per-apache-o-nginx/" aria-label="Per saperne di più su HTTPS, migliore impostazione per apache o nginx">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ormai l&#8217;uso di un certificato HTTPS per il proprio sito web è diventata una funzionalità di base, i browser invogliano i visitatori a navigare solo su siti protetti da certificati HTTPS.</p>



<p class="wp-block-paragraph">Per l&#8217;installazione possiamo affidarci a let&#8217;s encrypt oppure a qualcuna delle azienda commerciali più note.</p>



<p class="wp-block-paragraph">Oggi volevo però parlarvi della configurazione e non dell&#8217;installazione. Una volta installato il certificato, se non ben configurato, si avranno comunque potenziali problemi di sicurezza.</p>



<p class="wp-block-paragraph">Innanzitutto consiglio <a href="https://www.ssllabs.com/ssltest/analyze.html" target="_blank" rel="noreferrer noopener">https://www.ssllabs.com/ssltest/analyze.html</a> per verificare la situazione del certificato HTTPS del proprio sito.</p>



<p class="wp-block-paragraph">Per quanto riguarda invece la configurazione, consiglio di dare un&#8217;occhiata a <a rel="noreferrer noopener" href="https://ssl-config.mozilla.org/" target="_blank">https://ssl-config.mozilla.org/</a>. Dal portale si sceglie il tipo di server web, quanto la configurazione deve essere compatibile con i vecchi browser e si possono specificare la versione di server web e di openssl.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2021/11/09/https-migliore-impostazione-per-apache-o-nginx/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>nginx SSL PEM_read_bio:bad end line</title>
		<link>https://blog.smsoft.it/2021/10/12/nginx-ssl-pem_read_biobad-end-line/</link>
					<comments>https://blog.smsoft.it/2021/10/12/nginx-ssl-pem_read_biobad-end-line/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 12 Oct 2021 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[ssl]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=5170</guid>

					<description><![CDATA[La configurazione di nginx con alcuni certificati HTTPS che richiedono che il bundle sia incluso nel certificato stesso, prevede che il certificato ed il bundle vengano inseriti in un unico file che poi verrà indicato nella configurazione di nginx. Ipotizziamo di avere smsoft.it.crt e smsoft.it.ca-bundle, per unire questi ceritifcati in un unico file bisogna digitare: ... <a title="nginx SSL PEM_read_bio:bad end line" class="read-more" href="https://blog.smsoft.it/2021/10/12/nginx-ssl-pem_read_biobad-end-line/" aria-label="Per saperne di più su nginx SSL PEM_read_bio:bad end line">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">La configurazione di <strong>nginx</strong> con alcuni certificati <strong>HTTPS</strong> che richiedono che il <strong>bundle</strong> sia incluso nel certificato stesso, prevede che il certificato ed il bundle vengano inseriti in un unico file che poi verrà indicato nella configurazione di nginx.</p>



<p class="wp-block-paragraph">Ipotizziamo di avere smsoft.it.crt e smsoft.it.ca-bundle, per unire questi ceritifcati in un unico file bisogna digitare:</p>



<pre class="wp-block-preformatted">cat smsoft.it.crt smsoft.it.ca-bundle > smsoft.it.ca-combined.crt</pre>



<p class="wp-block-paragraph">e poi avremo nel file di configurazione del VH su nginx:</p>



<pre class="wp-block-preformatted">...<br>ssl_certificate /etc/nginx/ssl/smsoft.it.ca-combined.crt;<br>ssl_certificate_key /etc/nginx/ssl/smsoft.it.key;<br>...</pre>



<p class="wp-block-paragraph">Questo però provoca l&#8217;accodamento dei due file, infatti eseguendo:</p>



<pre class="wp-block-preformatted">openssl x509 -text -noout -in smsoft.it.ca-combined.crt</pre>



<p class="wp-block-paragraph">avremo un errore tipo:</p>



<pre class="wp-block-preformatted">unable to load certificate<br>139998757910160:error:0906D066:PEM routines:PEM_read_bio:bad end line:pem_lib.c:804:</pre>



<p class="wp-block-paragraph">e qualcosa del genere se proviamo a riavviare nginx:</p>



<pre class="wp-block-preformatted">(SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line)</pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong>ATTENZIONE</strong>: una cosa importante è aprire il file smsoft.it.ca-combined.crt, cercare la riga con scritto:</p>



<pre class="wp-block-preformatted">-----END CERTIFICATE----------BEGIN CERTIFICATE-----</pre>



<p class="wp-block-paragraph">e dividerla in due righe:</p>



<pre class="wp-block-preformatted">-----END CERTIFICATE-----<br>-----BEGIN CERTIFICATE-----</pre>



<p class="wp-block-paragraph">ora funzionerà tutto correttamente e potremo riavviare nginx.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2021/10/12/nginx-ssl-pem_read_biobad-end-line/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Come creare una configurazione HTTPS sicura per il proprio server web</title>
		<link>https://blog.smsoft.it/2021/04/06/come-creare-una-configurazione-https-sicura-per-il-proprio-server-web/</link>
					<comments>https://blog.smsoft.it/2021/04/06/come-creare-una-configurazione-https-sicura-per-il-proprio-server-web/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 06 Apr 2021 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sicurezza]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[tls]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=4916</guid>

					<description><![CDATA[Configurare il supporto HTTPS nel server web è più importante che attivare il supporto HTTPS nel server stesso. Questo perché i protocolli e le configurazioni possibili sono molte ed usare una configurazione, piuttosto che un&#8217;altra, può lasciare aperto un problema di sicurezza. Consiglio quindi di dare un&#8217;occhiata a https://ssl-config.mozilla.org/ per generare la corretta configurazione da ... <a title="Come creare una configurazione HTTPS sicura per il proprio server web" class="read-more" href="https://blog.smsoft.it/2021/04/06/come-creare-una-configurazione-https-sicura-per-il-proprio-server-web/" aria-label="Per saperne di più su Come creare una configurazione HTTPS sicura per il proprio server web">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Configurare il supporto HTTPS nel server web è più importante che attivare il supporto HTTPS nel server stesso. Questo perché i protocolli e le configurazioni possibili sono molte ed usare una configurazione, piuttosto che un&#8217;altra, può lasciare aperto un problema di sicurezza.</p>



<p class="wp-block-paragraph">Consiglio quindi di dare un&#8217;occhiata a <a rel="noreferrer noopener" href="https://ssl-config.mozilla.org/" target="_blank">https://ssl-config.mozilla.org/</a> per generare la corretta configurazione da inserire nel proprio server web. <br>In realtà il sito offre supporto anche per altri servizi server (MySQL, Postfix, ProFTPD, etc), dategli un&#8217;occhiata&#8230;</p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2021/04/06/come-creare-una-configurazione-https-sicura-per-il-proprio-server-web/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
