CORS in Nginx: Guida alla Configurazione per una Maggiore Sicurezza
Il Cross-Origin Resource Sharing (CORS) è un meccanismo cruciale per abilitare una comunicazione sicura tra server web e browser.

Il Cross-Origin Resource Sharing (CORS) è un meccanismo cruciale per abilitare una comunicazione sicura tra server web e browser. Fornendo un modo alle applicazioni web di richiedere risorse da domini diversi, CORS aiuta a superare i limiti della Same-Origin Policy (SOP), che impedisce alle applicazioni web di accedere ai dati su un dominio diverso da quello che serve l'applicazione.
In questo blog post, esploreremo l'importanza di CORS, come funziona e come configurarlo in Nginx per diversi scenari. Approfondiremo anche i concetti chiave di CORS, come allow-origin, allow-methods, allow-headers e expose-headers.
Importanza di CORS
CORS è essenziale per le moderne applicazioni web, poiché consente la comunicazione tra server e client da domini diversi. Questo garantisce che le applicazioni possano accedere in modo sicuro a dati e servizi ospitati su vari domini mantenendo l'integrità dei dati dell'utente.
Configurare CORS in Nginx
Nginx è un popolare server web che può essere facilmente configurato per supportare CORS. In questa sezione, forniremo due diversi esempi di configurazione per abilitare CORS su un server Nginx. La prima configurazione sarà per un dominio singolo, mentre la seconda coprirà domini multipli e sottodomini.
Esempio di Configurazione 1: Dominio Singolo (domain.com)
Per abilitare CORS per un dominio singolo, aggiungi quanto segue al blocco server nel tuo file di configurazione Nginx:
location / {
add_header 'Access-Control-Allow-Origin' 'https://domain.com';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
add_header 'Access-Control-Expose-Headers' 'Content-Length';
}
Esempio di Configurazione 2: Domini Multipli e Sottodomini (domain.com, domain1.com, domain2.com, domain3.com e sottodomini)
Per abilitare CORS per domini multipli e sottodomini, usa la seguente configurazione nel blocco server Nginx:
location / {
if ($http_origin ~* (https?://(?:.+\.)?(domain\.com|domain1\.com|domain2\.com|domain3\.com)$)) {
add_header 'Access-Control-Allow-Origin' '$http_origin';
}
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
add_header 'Access-Control-Expose-Headers' 'Content-Length';
}
Concetti CORS
- Access-Control-Allow-Origin: Questo header specifica quali origini sono autorizzate ad accedere alle risorse sul server. Nei nostri esempi, impostiamo un singolo dominio o usiamo un'espressione regolare per corrispondere a più domini e sottodomini.
- Access-Control-Allow-Methods: Questo header definisce i metodi HTTP consentiti (es. GET, POST, OPTIONS) che il client può utilizzare quando effettua richieste al server.
- Access-Control-Allow-Headers: Questo header elenca gli header HTTP consentiti che il client può includere nelle sue richieste. Header comuni includono "Content-Type" e "Authorization."
- Access-Control-Expose-Headers: Questo header specifica quali header il server espone al client. Nei nostri esempi, esponiamo l'header "Content-Length."
Conclusione
CORS è un meccanismo di sicurezza vitale per le moderne applicazioni web. Comprendendo e implementando CORS in Nginx, puoi garantire che le tue applicazioni web possano accedere in modo sicuro alle risorse attraverso domini diversi. Con questa guida, dovresti ora essere in grado di configurare CORS in Nginx per domini singoli o multipli e sottodomini, comprendendo anche l'importanza dei concetti chiave CORS come allow-origin, allow-methods, allow-headers e expose-headers. Assicurarti che il tuo server Nginx sia conforme a CORS migliorerà la sicurezza e la funzionalità delle tue applicazioni web, fornendo una migliore esperienza utente e una maggiore compatibilità su varie piattaforme.
Altro da Ercan
Altri due siti, stesso autore, terreno diverso.
IA, LLMs, agenti, ML applicato.
Note sul campo su workload IA. Analisi dei costi Bedrock, pattern di agenti, trade-off di storage vettoriale, failure mode in produzione.
Visita ercan.ai →L'hub. Chi sono, consulenza, contatti.
Hub personale per entrambe le tracce di scrittura. Chi sono, come funziona la consulenza, come contattarmi.
Visita ercanermis.com →