דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. NGINX: להאזין לפורט מקומי גם ללא server_name, ובפורט חיצוני עם

NGINX: להאזין לפורט מקומי גם ללא server_name, ובפורט חיצוני עם

מתוזמן נעוץ נעול הועבר תכנות
13 פוסטים 3 כותבים 652 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #1

    האם אפשר במקטע server אחד להאזין לפורט אחד דוקא בהינתן server_name מסויים, ולאחר בכל מקרה?
    אבאר את הצורך:
    יש לי כמה אתרים על אותו אייפי - 80.
    אני רוצה לפנות לחלקם גם מתוך המכונה עצמה, ואז אני רוצה להשתמש בlocalhost, בלי להשתמש עם שם של שרת ותרגום כתובת (host או dns). כיון שיש כמה אתרים אני חייב לזהות את מי אני רוצה, אז אני רוצה לעשות זאת ע"י פורט פנימי יייחודי לכל אתר, אבל שלא יהיה נגיש מבחוץ.

    תודה לעונים!

    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

    בכל נושא אפשר ליצור קשר dovid@tchumim.com

    yossizY תגובה 1 תגובה אחרונה
    0
    • yossizY מנותק
      yossizY מנותק
      yossiz
      השיב לdovid ב נערך לאחרונה על ידי yossiz
      #2

      @dovid אמר בNGINX: להאזין לפורט מקומי גם ללא server_name, ובפורט חיצוני עם:

      האם אפשר במקטע server אחד...

      בלי לענות על עצם השאלה, לכאורה אתה יכול לעשות קובץ נפרד לכל שרת, ואז לעשות שתי מקטעי server כזה

      server {
          listen 80;
          server_name server1;
          include file1.conf;
      }
      
      server {
          listen 8080;
          include file1.conf;
      }
      
      server {
          listen 80;
          server_name server2;
          include file2.conf;
      }
      
      server {
          listen 8081;
          include file2.conf;
      }
      

      האם זה עונה על הצרכים שלך?

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

      תגובה 1 תגובה אחרונה
      1
      • yossizY מנותק
        yossizY מנותק
        yossiz
        כתב ב נערך לאחרונה על ידי yossiz
        #3

        בעצם הכי פשוט, למה לא לעשות

        server {
            server_name server1 localhost;
            listen 80 8080
        }
        
        server {
            server_name server1 localhost;
            listen 80 8081
        }
        

        ואז תיגש ל-server2 ככה:

        http://localhost:8081/
        

        ול-server1 גם בלי הפורט (כי אם שני מקטעים תואמים אז הראשון תקף)

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        תגובה 1 תגובה אחרונה
        1
        • י מנותק
          י מנותק
          יוסף בן שמעון
          כתב ב נערך לאחרונה על ידי
          #4

          @dovid אמר בNGINX: להאזין לפורט מקומי גם ללא server_name, ובפורט חיצוני עם:

          יש לי כמה אתרים על אותו אייפי - 80.

          אנג'נאיקס לא אמור בכלל להתערב לך בתעבורה הפנימית, אם אתה ניגש מתוך המכונה לכתובת http://127.0.0.1:5050/ זה לא עובר דרכו.

          dovidD תגובה 1 תגובה אחרונה
          1
          • dovidD מנותק
            dovidD מנותק
            dovid ניהול
            השיב ליוסף בן שמעון ב נערך לאחרונה על ידי dovid
            #5

            @יוסף-בן-שמעון אמר בNGINX: להאזין לפורט מקומי גם ללא server_name, ובפורט חיצוני עם:

            @dovid אמר בNGINX: להאזין לפורט מקומי גם ללא server_name, ובפורט חיצוני עם:

            יש לי כמה אתרים על אותו אייפי - 80.

            אנג'נאיקס לא אמור בכלל להתערב לך בתעבורה הפנימית, אם אתה ניגש מתוך המכונה לכתובת http://127.0.0.1:5050/ זה לא עובר דרכו.

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

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            תגובה 1 תגובה אחרונה
            1
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              כתב ב נערך לאחרונה על ידי dovid
              #6

              @yossiz ברור, שאלתי אם אפשר לשלב בלי לשכפל את כל הserver.

              @dovid אמר בNGINX: להאזין לפורט מקומי גם ללא server_name, ובפורט חיצוני עם:

              האם אפשר במקטע server אחד

              אני מסכים שזה לא שווה כ"כ מחשבה, ובאשר לreuse אפשר להשתמש בייבוא קובץ ע"י include.

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              yossizY תגובה 1 תגובה אחרונה
              0
              • yossizY מנותק
                yossizY מנותק
                yossiz
                השיב לdovid ב נערך לאחרונה על ידי yossiz
                #7

                @dovid אמר בNGINX: להאזין לפורט מקומי גם ללא server_name, ובפורט חיצוני עם:

                אני רוצה לפנות לחלקם גם מתוך המכונה עצמה, ואז אני רוצה להשתמש בlocalhost, בלי להשתמש עם שם של שרת ותרגום כתובת (host או dns)

                @dovid אמר בNGINX: להאזין לפורט מקומי גם ללא server_name, ובפורט חיצוני עם:

                כדי למנוע תעבורה חיצונית צריך להשתמש עם deny, וallow על טוווחי אייפי, ואת זה אני לא יודע לשלב לפי הפורט

                אם אתה רוצה להאזין רק על 127.0.0.1 לא צריך שום deny, פשוט תגדיר

                listen 127.0.0.1:8080
                

                ותעשה כמו שכתבתי בפוסט השני שלי.

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                dovidD תגובה 1 תגובה אחרונה
                0
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  השיב לyossiz ב נערך לאחרונה על ידי
                  #8

                  @yossiz העובדות הם לא ככה!
                  אכן דלא ככתוב פה https://stackoverflow.com/a/13643659/1271037
                  אבל הנה סימוכין לעובדות: https://serverfault.com/questions/667798/allow-only-local-users-in-nginx

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  yossizY תגובה 1 תגובה אחרונה
                  0
                  • yossizY מנותק
                    yossizY מנותק
                    yossiz
                    השיב לdovid ב נערך לאחרונה על ידי yossiz
                    #9

                    @dovid נו, הבאת שני מראי מקומות כמוני... מסתבר שגם העובדות הם ככה, לא?

                    This means that you don't need separate allow / deny directives inside your configuration with your use case, because the connections are limited lower in the network stack.

                    So, if you want to set nginx to bind to localhost, you'd change that to: listen 127.0.0.1:80;
                    In this way, requests that are not coming from localhost are discarded (they don't even hit nginx).

                    למעשה לא הבנתי מתוך השאלה מה עיקר הבעיה, העיקר שלא תצטרך DNS להגיע לשרת? אז תכתוב

                    server_name localhost
                    

                    אתה רוצה למנוע גישה מבחוץ, ואתה לא מאמין ש:listen 127.0.0.1 מספיק? תשתמש בחומת האש.

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

                    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                    dovidD תגובה 1 תגובה אחרונה
                    0
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #10

                      @yossiz סיכום מעולה...

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      1
                      • dovidD מנותק
                        dovidD מנותק
                        dovid ניהול
                        השיב לyossiz ב נערך לאחרונה על ידי
                        #11

                        @yossiz אמר בNGINX: להאזין לפורט מקומי גם ללא server_name, ובפורט חיצוני עם:

                        @dovid נו, הבאת שני מראי מקומות כמוני... מסתבר שגם העובדות הם ככה, לא?

                        This means that you don't need separate allow / deny directives inside your configuration with your use case, because the connections are limited lower in the network stack.

                        So, if you want to set nginx to bind to localhost, you'd change that to: listen 127.0.0.1:80;
                        In this way, requests that are not coming from localhost are discarded (they don't even hit nginx).

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

                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

                        yossizY תגובה 1 תגובה אחרונה
                        0
                        • yossizY מנותק
                          yossizY מנותק
                          yossiz
                          השיב לdovid ב נערך לאחרונה על ידי
                          #12

                          @dovid אמר בNGINX: להאזין לפורט מקומי גם ללא server_name, ובפורט חיצוני עם:

                          עד שאתה לא בודק אל תגיד כלום

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

                          • תבדוק אם יש לך listen נוסף (אולי על IPv6?)
                          • אולי שיחקת עם כללי iptables איכשהו וגרמת שתעבורה בממשקים חיצוניים מועברים ל-localhost (אולי משהו שקשור לנטפרי? סתם ניחוש... 😏 )?
                          • מה netstat -a מראה?

                          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                          dovidD תגובה 1 תגובה אחרונה
                          1
                          • dovidD מנותק
                            dovidD מנותק
                            dovid ניהול
                            השיב לyossiz ב נערך לאחרונה על ידי
                            #13

                            @yossiz אמר בNGINX: להאזין לפורט מקומי גם ללא server_name, ובפורט חיצוני עם:

                            • תבדוק אם יש לך listen נוסף (אולי על IPv6?)

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

                            תודה רבה על המאמץ!

                            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                            בכל נושא אפשר ליצור קשר dovid@tchumim.com

                            תגובה 1 תגובה אחרונה
                            2

                            בא תתחבר לדף היומי!
                            • התחברות

                            • אין לך חשבון עדיין? הרשמה

                            • התחברו או הירשמו כדי לחפש.
                            • פוסט ראשון
                              פוסט אחרון
                            0
                            • דף הבית
                            • קטגוריות
                            • פוסטים אחרונים
                            • משתמשים
                            • חיפוש
                            • חוקי הפורום