CORS στο Nginx: Οδηγός Διαμόρφωσης για Ενισχυμένη Ασφάλεια
Το Cross-Origin Resource Sharing (CORS) είναι ένας κρίσιμος μηχανισμός για την ενεργοποίηση ασφαλούς επικοινωνίας μεταξύ web servers και browsers.

Το Cross-Origin Resource Sharing (CORS) είναι ένας κρίσιμος μηχανισμός για την ενεργοποίηση ασφαλούς επικοινωνίας μεταξύ web servers και browsers. Παρέχοντας έναν τρόπο στις web εφαρμογές να ζητούν πόρους από διαφορετικά domains, το CORS βοηθά στην υπέρβαση των περιορισμών του Same-Origin Policy (SOP), που περιορίζει τις web εφαρμογές από την πρόσβαση σε δεδομένα σε διαφορετικό domain από αυτό που εξυπηρετεί την εφαρμογή.
Σε αυτό το blog post, θα εξερευνήσουμε τη σημασία του CORS, πώς λειτουργεί και πώς να το διαμορφώσεις στο Nginx για διαφορετικά σενάρια. Θα εμβαθύνουμε επίσης σε βασικές έννοιες του CORS, όπως allow-origin, allow-methods, allow-headers και expose-headers.
Σημασία του CORS
Το CORS είναι απαραίτητο για τις σύγχρονες web εφαρμογές, καθώς επιτρέπει την επικοινωνία μεταξύ servers και clients από διαφορετικά domains. Αυτό διασφαλίζει ότι οι εφαρμογές μπορούν να έχουν πρόσβαση σε δεδομένα και υπηρεσίες που φιλοξενούνται σε διάφορα domains με ασφάλεια, διατηρώντας ταυτόχρονα την ακεραιότητα των δεδομένων του χρήστη.
Διαμόρφωση CORS στο Nginx
Το Nginx είναι ένας δημοφιλής web server που μπορεί να διαμορφωθεί εύκολα για να υποστηρίζει CORS. Σε αυτή την ενότητα, θα παρέχουμε δύο διαφορετικά παραδείγματα διαμόρφωσης για την ενεργοποίηση του CORS σε έναν Nginx server. Η πρώτη διαμόρφωση θα είναι για ένα μόνο domain, ενώ η δεύτερη θα καλύπτει πολλαπλά domains και subdomains.
Παράδειγμα Διαμόρφωσης 1: Ένα Μόνο Domain (domain.com)
Για να ενεργοποιήσεις το CORS για ένα μόνο domain, πρόσθεσε τα ακόλουθα στο server block στο αρχείο διαμόρφωσης του 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';
}
Παράδειγμα Διαμόρφωσης 2: Πολλαπλά Domains και Subdomains (domain.com, domain1.com, domain2.com, domain3.com και subdomains)
Για να ενεργοποιήσεις το CORS για πολλαπλά domains και subdomains, χρησιμοποίησε την ακόλουθη διαμόρφωση στο Nginx server block σου:
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';
}
Έννοιες CORS
- Access-Control-Allow-Origin: Αυτό το header καθορίζει ποιες προελεύσεις επιτρέπεται να έχουν πρόσβαση στους πόρους του server. Στα παραδείγματά μας, είτε ορίζουμε ένα μόνο domain είτε χρησιμοποιούμε μια regular expression για να ταιριάξουμε πολλαπλά domains και subdomains.
- Access-Control-Allow-Methods: Αυτό το header ορίζει τις επιτρεπόμενες HTTP μεθόδους (π.χ., GET, POST, OPTIONS) που μπορεί να χρησιμοποιήσει ο client όταν κάνει requests στον server.
- Access-Control-Allow-Headers: Αυτό το header παραθέτει τα επιτρεπόμενα HTTP headers που ο client μπορεί να συμπεριλάβει στα requests του. Συνηθισμένα headers περιλαμβάνουν "Content-Type" και "Authorization".
- Access-Control-Expose-Headers: Αυτό το header καθορίζει ποια headers εκθέτει ο server στον client. Στα παραδείγματά μας, εκθέτουμε το "Content-Length" header.
Συμπέρασμα
Το CORS είναι ένας ζωτικός μηχανισμός ασφαλείας για τις σύγχρονες web εφαρμογές. Κατανοώντας και εφαρμόζοντας το CORS στο Nginx, μπορείς να διασφαλίσεις ότι οι web εφαρμογές σου μπορούν να έχουν ασφαλή πρόσβαση σε πόρους σε διαφορετικά domains. Με αυτόν τον οδηγό, θα πρέπει τώρα να μπορείς να διαμορφώσεις το CORS στο Nginx για ένα ή πολλαπλά domains και subdomains, κατανοώντας παράλληλα τη σημασία βασικών εννοιών του CORS όπως allow-origin, allow-methods, allow-headers και expose-headers. Η διασφάλιση ότι ο Nginx server σου είναι CORS-compliant θα βελτιώσει την ασφάλεια και τη λειτουργικότητα των web εφαρμογών σου, παρέχοντας καλύτερη εμπειρία χρήστη και αυξημένη συμβατότητα σε διάφορες πλατφόρμες.
Περισσότερα από τον Ercan
Δύο ακόμη ιστότοποι, ίδιος συγγραφέας, διαφορετικό έδαφος.
AI, LLMs, agents, εφαρμοσμένη ML.
Σημειώσεις πεδίου για AI workloads. Ανάλυση κόστους Bedrock, agent patterns, trade-offs αποθήκευσης διανυσμάτων, failure modes σε παραγωγή.
Επισκεφθείτε ercan.ai →Ο κόμβος. Σχετικά, συμβουλευτική, επικοινωνία.
Προσωπικός κόμβος και για τις δύο διαδρομές γραφής. Ποιος είμαι, πώς λειτουργεί η συμβουλευτική, πώς να επικοινωνήσετε.
Επισκεφθείτε ercanermis.com →