אנדרואיד

הגדרת פרוקסי nginx הפוך

Масштабируемая конфигурация nginx / Игорь Сысоев (Nginx)

Масштабируемая конфигурация nginx / Игорь Сысоев (Nginx)

תוכן עניינים:

Anonim

פרוקסי הפוך הוא שירות שלוקח בקשת לקוח, שולח את הבקשה לשרת אחד או יותר, מביא את התגובה ומספק את תגובת השרת ללקוח.

בגלל הביצועים והביצועיות שלה, NGINX משמשת לעתים קרובות כפרוקסי הפוך עבור שרתי HTTP ו- HTTP שאינם. תצורת פרוקסי הפוכה טיפוסית היא להציב את Nginx מול יישומי Node.js, Python או Java.

השימוש ב- Nginx כ- proxy הפוך מעניק לך מספר יתרונות נוספים:

  • איזון עומסים - Nginx יכול לבצע איזון עומסים על מנת להפיץ את בקשות הלקוחות על פני שרתים קרובים, מה שמשפר את הביצועים, יכולת ההרחבה והאמינות. זיכרון מטמון - כאשר Nginx הוא פרוקסי הפוך, באפשרותך לשמור במטמון את הגרסאות המוצגות מראש של העמודים כדי להאיץ את זמני טעינת העמודים. זה עובד על ידי מטמון של התוכן שהתקבל מתגובות השרתים המקובלים ושימוש בו כדי להגיב ללקוחות מבלי שיהיה צורך ליצור קשר עם השרת המקורב לאותו תוכן בכל פעם. סיום SSL - Nginx יכול לשמש כנקודת קצה SSL לחיבורים עם הלקוחות. הוא יטפל בפענוח חיבורי SSL נכנסים ויצפין את תגובות השרת המקובלות. דחיסה - אם השרת הממוקם אינו שולח תגובות דחוסות, באפשרותך לקבוע את התצורה של Nginx לדחיסת התגובות לפני שליחתן ללקוחות. הפחתת התקפות DDoS - באפשרותך להגביל את הבקשות הנכנסות ומספר החיבורים לכל כתובת IP יחידה לערך האופייני למשתמשים רגילים. Nginx מאפשרת לך גם לחסום או להגביל את הגישה על סמך מיקום הלקוח, ואת הערך של כותרות הבקשה כגון "User-Agent" ו- "Referer".

מאמר זה מתאר את השלבים הנדרשים להגדרת תצורה של Nginx כ- proxy הפוך.

תנאים מוקדמים

אנו מניחים כי התקנת Nginx בשרת Ubuntu, CentOS או Debian שלך.

שימוש ב- Nginx כפרוקסי הפוך

כדי לקבוע את התצורה של Nginx כ- proxy הפוך לשרת HTTP, פתח את קובץ התצורה של חסימת השרת של התחום וציין מיקום ושרת פרוקסי בתוכו:

server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:8080; } }

כתובת האתר של השרת הממוקמת מוגדרת באמצעות הנחיית proxy_pass ויכולה להשתמש ב- HTTP או HTTPS כפרוטוקול, שם תחום או כתובת IP, ויציאה אופציונלית ו- URI ככתובת.

התצורה שלמעלה מורה ל- Nginx להעביר את כל הבקשות למיקום /app לשרת המקובל בכתובת http://127.0.0.1:8080 .

בהפצות מבוססות Ubuntu ו- Debian, קבצי חסימת שרת מאוחסנים בספרייה /etc/nginx/sites-available , בעוד שהם /etc/nginx/conf.d בספריית CentOS בספריית /etc/nginx/conf.d .

כדי להמחיש טוב יותר כיצד הנחיות location ו- proxy_pass עובדות, בוא ניקח את הדוגמה הבאה:

server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:8000/wordpress/; } }

אם מבקר ניגש אל http://example.com/blog/my-post , Nginx ישלח את בקשתה זו אל http://node1.com:8000/wordpress/my-post .

כאשר הכתובת של השרת המקושר מכילה URI, ( /wordpress/ ), URI של הבקשה המועבר לשרת המקושר מוחלף על ידי URI המצוין בהנחיה. אם הכתובת של השרת המקופח מוגדרת ללא URI, ה- URI המלא לבקשה מועבר לשרת המקורב.

כותרות בקשות עוברות

כאשר Nginx ממלא בקשה לבקשה, היא מגדירה אוטומטית שני שדות כותרת בבקשות פרוקסי מהלקוח, Host וחיבור, ומסלקת כותרות ריקות. Host מוגדר $proxy_host מוגדר לסגירה.

כדי להתאים או להגדיר כותרות לחיבורים פרוקסי, השתמש בהנחיית proxy_set_header ולאחריה ערך הכותרת. תוכל למצוא רשימה של כל כותרות הבקשות הזמינות והערכים המותרים בהן כאן. אם ברצונך למנוע העברת כותרת לשרת הפרוקסי, הגדר אותו למחרוזת ריקה "" .

בדוגמה הבאה אנו משנים את הערך של שדה הכותרת $host ומסירים את שדה הכותרת Accept-Encoding ידי הגדרת ערכו למחרוזת ריקה.

location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:3000; }

בכל פעם שאתה משנה את קובץ התצורה, עליך להפעיל מחדש את שירות Nginx כדי שהשינויים ייכנסו לתוקף.

קביעת התצורה של Nginx כ- Proxy הפוך לשרת שאינו HTTP

כדי להגדיר את התצורה של Nginx כ- proxy הפוך לשרת שאינו HTTP פרוקסי, באפשרותך להשתמש בהנחיות הבאות:

  • fastcgi_pass - פרוקסי הפוך לשרת FastCGI. uwsgi_pass - פרוקסי הפוך לשרת uwsgi. scgi_pass - פרוקסי הפוך לשרת SCGI. memcached_pass - פרוקסי הפוך לשרת Memcached.

אחת הדוגמאות הנפוצות ביותר היא להשתמש ב- Nginx כמתנה לאחור ל- PHP-FPM:

server { #… other directives location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }

אפשרויות פרוקסי הפוך נפוצות של Nginx

הגשת תוכן באמצעות HTTPS הפכה בסטנדרט בימינו. בחלק זה, אנו נותנים לך דוגמה לתצורת פרוקסי ה- Nginx לאחור של HTTPS כולל הפרמטרים והכותרות המומלצים של פרוקסי Nginx.

location/ { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }

  • proxy_http_version 1.1 - מגדיר את גרסת פרוטוקול HTTP לצורכי פרוקסי, כברירת מחדל היא קבעה 1.0. עבור שקעי רשת וקשרי keepalive אתה צריך להשתמש בגירסה 1.1. proxy_cache_bypass $http_upgrade - מגדיר תנאים שבהם התגובה לא תילקח מטמון. Upgrade $http_upgrade Connection "upgrade" - שדות כותרות אלה נדרשים אם היישום שלך משתמש ב- Websockets. Host $host - משתנה $host בסדר העדיפות הבא מכיל: שם מארח משורת הבקשה, או שם Host משדה הכותרת של בקשת Host , או שם השרת התואם לבקשה. X-Real-IP $remote_addr - מעביר את כתובת ה- IP המרוחקת של המבקר לשרת המקורב. X-Forwarded-For $proxy_add_x_forwarded_for - רשימה הכוללת את כתובות ה- IP של כל שרת שהלקוח עבר אליו. X-Forwarded-Proto $scheme - כשמשתמשים בתוך חסימת שרת HTTPS, כל תגובת HTTP מהשרת המקורבן נכתבת מחדש ל- X-Forwarded-Host $host - מגדיר את המארח המקורי שהתבקש על ידי הלקוח. X-Forwarded-Port $server_port - מגדיר את היציאה המקורית המבוקשת על ידי הלקוח.

סיכום

למדת כיצד להשתמש ב- Nginx כפרוקסי הפוך. הראינו לכם כיצד להעביר פרמטרים נוספים לשרת ולשנות ולהגדיר שדות כותרת שונים בבקשות פרוקסיד.

nginx