פרוקסי הפוך NGINX
-
איך שייך להגדיר לNGINX להעביר דומיין לIP אחר ושם יאזין לו NGINX אחר?
ניסיתי את התצורה הבאה ולא עובדserver { listen 80; server_name XXX.ovh; location / { 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 Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://192.168.182.130:80; proxy_redirect off; # Socket.IO Support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } השאלה היא גם איך אני יפנה את כל תת הדומיינים שלו בלי להגדיר לכל אחד בלוק בפני עצמו
-
@A0533057932 כתב בפרוקסי הפוך NGINX:
ניסיתי את התצורה הבאה ולא עובד
איך שכתבת זה רק הסאב דומיינים, בשביל לכלול את הדומיין תסיר את הכוכבית.
התצורה שלך אמורה לעבוד מצויין.
בקשר ל"לא עובד", אתה חייב לכלול יותר מידע.
כמו"כ כדאי שתבדוק בaccess.log/error.log מה קורה. -
פוסט זה נמחק!
-
@dovid אני יפרט מה אני רוצה לעשות
שרת A מאזין ל80 ול443 וכו'
ויש לי על אותו IP שרת B
אני צריך שדומיין X ילך לשרת B
אני הבנתי שעלי להגדיר פרוקסי בNGINX שילך לIP של שרת B
אבל בפועל האתר לא עובר לשרת Bמה שקורה זה שהURL משתנה לדבר הבא
http://XXX.ovh/192.168.182.130 ולא באמת פונה לשרת B -
אני רואה ששאלתי את השאלה בעבר
אבל שם פשוט שעיתי פתרון אחר
https://tchumim.com/post/127954
אבל עדין השאלה המקורית נשארה קשה
איך מגדירים בSERVER A להפנות דומיין לSERVER B -
@A0533057932 כתב בפרוקסי הפוך NGINX:
מה שקורה זה שהURL משתנה לדבר הבא
http://XXX.ovh/192.168.182.130בכתובת בדפדפן מכניסים XXX.ovh U
וזה משתנה למה שכתבת?
כמה שאלות:
א. הדומיין מפנה לשרת של הNGINX?
ב. בשרת של הNGINX, הפקודה curl 192.168.182.130 מחזירה תוצאה תקינה? -
@dovid כתב בפרוקסי הפוך NGINX:
@A0533057932 כתב בפרוקסי הפוך NGINX:
מה שקורה זה שהURL משתנה לדבר הבא
http://XXX.ovh/192.168.182.130בכתובת בדפדפן מכניסים XXX.ovh U
וזה משתנה למה שכתבת?כן
כמה שאלות:
א. הדומיין מפנה לשרת של הNGINX?הדומיין מפנה לIP של השרת ומגיע לVM שעליו יש את הNGINX הראשון
ב. בשרת של הNGINX, הפקודה curl 192.168.182.130 מחזירה תוצאה תקינה?
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> -
@A0533057932
אין לי תשובה. -
@dovid אני כרגע התייאשתי מלהבין מה הולך
רק נשאר לי לחשוב
אולי צריך להגדיר הגדרות מיוחדות בNGINX של שרת B?
כלומר יכול להיות ששם לא שמים בלוק רגיל אלא בלוק מיוחד שמקבל פרוקסי הפוך וממיר אותו לקריאה רגילה? -
@A0533057932 כתב בפרוקסי הפוך NGINX:
אולי צריך להגדיר הגדרות מיוחדות בNGINX של שרת B?
לא.
לא צריך בכלל שיהיה nginx, אתה יכול לשלוח גם לgoogle.com בפרוקסי.
אני לא מדבר מניסיון אלא מסברא. -
@A0533057932 כתב בפרוקסי הפוך NGINX:
מה שקורה זה שהURL משתנה לדבר הבא
http://XXX.ovh/192.168.182.130 ולא באמת פונה לשרת Bאולי זה קורה בגלל ההדרים?
ניסית להגדיר כך?server { listen 80; server_name XXX.ovh; location / { proxy_pass http://192.168.182.130; } } -
@ליבל אותה תוצאה
-
@A0533057932
מה הפלט שלcurl -I XXX.ovh
וגם הפלט של הרצת פקודה הבאה על השרת (של ה-nginx הראשון):
curl -I 192.168.182.130
-
@ליבל כתב בפרוקסי הפוך NGINX:
@A0533057932 כתב בפרוקסי הפוך NGINX:
מה שקורה זה שהURL משתנה לדבר הבא
http://XXX.ovh/192.168.182.130 ולא באמת פונה לשרת Bאולי זה קורה בגלל ההדרים?
ניסית להגדיר כך?server { listen 80; server_name XXX.ovh; location / { proxy_pass http://192.168.182.130; } } כעת איפסתי את כל הגדרות הNGINX ובדקתי שוב
הפלט הזה מגיע למכונה השניה
אני בודק האם הוא גם יכול להפעיל בפועל דברים עליה
מעדכןהדומיין עצמו מגיע
תת הדומיין לא מגיע או ליתר דיוק לא עוהר לתיקיה שהוא אמור ללכת אליה -
@yossiz כתב בפרוקסי הפוך NGINX:
curl -I XXX.ovh
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 17 Feb 2023 11:05:19 GMT
Content-Type: text/html
Content-Length: 612
Connection: keep-alive
Last-Modified: Tue, 21 Apr 2020 14:09:01 GMT
ETag: "5e9efe7d-264"
Accept-Ranges: bytes
X-Frame-Options: sameorigin
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Content-Security-Policy: default-src https: data: 'unsafe-inline' 'unsafe-eval'
Referrer-Policy: strict-origincurl -I 192.168.182.130
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Fri, 17 Feb 2023 11:05:46 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 21 Apr 2020 14:09:01 GMT
Connection: keep-alive
ETag: "5e9efe7d-264"
Accept-Ranges: bytes -
פוסט זה נמחק!
-
אני רואה שהתשובה של @ליבל
server { listen 80; server_name XXX.ovh; location / { proxy_pass http://192.168.182.130; } } עובדת כלומר הדומיין מגיע למכונה השניה ומעלה את הדף של נגינקס
רק החיסרון הוא שתת דומיין לא עובר לו
כלומר במעבר נמחק התת דומיין ולא מגיע בכלל למכונה השניה כך שהיא לא יודעת שאני פונה באמצעות תת דומיין
מעלה פלט של מה שביקש @yossiz (אני יודע שכתע זה IP פנימי אחר)ubuntu@mail:~$ curl -I 192.168.182.131 HTTP/1.1 200 OK Server: nginx/1.18.0 (Ubuntu) Date: Fri, 17 Feb 2023 11:25:22 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 21 Apr 2020 14:09:01 GMT Connection: keep-alive ETag: "5e9efe7d-264" Accept-Ranges: bytes ubuntu@mail:~$ curl -I pma.XXX.ovh HTTP/1.1 200 OK Server: nginx Date: Fri, 17 Feb 2023 11:25:28 GMT Content-Type: text/html Content-Length: 612 Connection: keep-alive Last-Modified: Tue, 21 Apr 2020 14:09:01 GMT ETag: "5e9efe7d-264" Accept-Ranges: bytes X-Frame-Options: sameorigin X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block X-Download-Options: noopen X-Permitted-Cross-Domain-Policies: none Content-Security-Policy: default-src https: data: 'unsafe-inline' 'unsafe-eval' Referrer-Policy: strict-origin ubuntu@mail:~$ curl -I XXX.ovh HTTP/1.1 200 OK Server: nginx Date: Fri, 17 Feb 2023 11:25:34 GMT Content-Type: text/html Content-Length: 612 Connection: keep-alive Last-Modified: Tue, 21 Apr 2020 14:09:01 GMT ETag: "5e9efe7d-264" Accept-Ranges: bytes X-Frame-Options: sameorigin X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block X-Download-Options: noopen X-Permitted-Cross-Domain-Policies: none Content-Security-Policy: default-src https: data: 'unsafe-inline' 'unsafe-eval' Referrer-Policy: strict-origin ubuntu@mail:~$ לפי מה שזה נראה הן הדומיין והן התת דומיין מחזירים את אותה התגובה
-
@A0533057932 כתב בפרוקסי הפוך NGINX:
כלומר במעבר נמחק התת דומיין ולא מגיע בכלל למכונה השניה כך שהיא לא יודעת שאני פונה באמצעות תת דומיין
זה באמת בגלל הקוד של @ליבל. הא הסיר את ההעברה של הכותרת Host אז לשרת היעד אין מושג בשם איזה אתר פנו אליו, וזה מפעיל את אתר הdefault שיש בnginx.
-
פתאום אני מבין את הבעיה.
שאתה כותב את האייפי לבד בcurl הכל עובד כי הוא מחזיר את הdefault.
ואילו כשאתה כותב את ההעברה בפרוקסי המלאה כמו בתחילת הנושא אתה מקבל שגיאה/בעיה כי פשוט הדומיין/הסאב דומיין מוגדרים במחשב היעד באופן לא תקין.אתה יכול להיווכח בזאת בקלות ע"י הרצה של curl עם הhost המתאים:
curl 192.168.182.130 -H "Host: xxx.ovh";
אתה תראה שזה יחזיר בדיוק את אותה בעיה שזה מחזיר בדפדפן.
שאלת בתחילת הנושא אם הnginx של שרת היעד צריך הגדרה מסויימת וכתבתי לך שלא, אבל ברור שהוא צריך להיות מוגדר לטפל בדומיין/סאב דומיין המתאים ובואפן הראוי כאילו הוא זה שמקבל אותם במקור.
-
@dovid כתב בפרוקסי הפוך NGINX:
אתה תראה שזה יחזיר בדיוק את אותה בעיה שזה מחזיר בדפדפן.
לא בדיוק הבנתי, הרי כל דומיין\תת דומייין פונה ל IP, אז השרת הראשון יענה לו (כמובן בהתאם לפורט)
עכשיו אם אתה רוצה להפנות בהתאם לתת דומיין אז צריך להגדיר זאת בנפרד, כלומר מה זה קשור למה שכתבת ?
20/31