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

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

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

ניתוב בין 2 אתרים

מתוזמן נעוץ נעול הועבר תכנות
20 פוסטים 2 כותבים 1.2k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מנצפךמ מנותק
    מנצפךמ מנותק
    מנצפך
    כתב ב נערך לאחרונה על ידי
    #5

    @dovid בתחילה זרק לי שגיאה:

     nginx: [alert] could not open error log file: CreateFile() "logs/error.log" failed (3: The system cannot find the path specified)
    

    וגם שגיאה שלא מוצא את הקובץ:
    C:\Users\user/conf/nginx.conf
    יצרתי אותו והכנסתי את מה שכתבת.
    ואז זרק את השגיאה הנ"ל ואת השגיאה:

     2018/03/28 11:11:14 [emerg] 13408#684: "server" directive is not allowed here in C:\Users\user/conf/nginx.conf:1
    

    הפעלתי כמנהל, עשיתי CD לתיקייה של ה - nginx.
    עכשיו הוא זרק לי שגיאה:

     nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
    

    הבנתי שעכשיו הוא לוקח קובץ אחר, מהתיקייה של התוכנה. וזו כבר התקדמות.
    אבל יש לו בעיה של הרשאות או משהו כזה (ביטלתי חומת אש). איך להתקדם? תודה.

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

      מעניין, אני לא זוכר את הבעיות הללו. ייתכן שעליך להנמיך את ההרשאות של התיקיה, תן full-controle לUsers (אולי עשיתי זאת ואינני זוכר).
      השגיאה האחרונה היאכפי הנראה בגלל שפורט 80 תפוס ע"י תהליך כל שהוא.
      אם פועל אצלך IIS תכבה אותו. כנס לשירותים ובדוק אם Web Deployment Agent Service פועל ואם כן כבה אותו (הגדר אותו גם שלא יופעל אוטומטית להבא).
      אחרי זה הרץ שוב את הnginx.
      לכבות ולהפעיל את הnginx בwindows תעשה ע"י שורת הפקודה -
      הפעלה:

      start nginx
      

      בדיקת תקינות קובץ הקונפיגורציה:

      nginx -t
      

      טעינה מחדש (החלת הקונפיגורציה החדשה אם היא תקינה, ובלי שיש נפילת שרת כלל)

      nginx -s reload
      

      כיבוי:

      nginx -s quit
      

      כיבוי כפוי:

      nginx -s stop
      

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

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

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

        @dovid זה עובד מעולה. יש לי כמה בעיות:

        1. ברגע שאני מריץ את nginx הוא תוקע לי את ה - CMD. כלומר אני לא יכול לכתוב עוד פקודות. אם אני רוצה נניח לכבות את ה - nginx צריך לפתוח CMD חדש.

        2. גם בטרמינל חדש איני מצליח לכבות (stop or quit). הוא כותב לי:

           nginx: [error] OpenEvent("Global\ngx_stop_11452") failed (2: The system cannot find the file specified)
          

        אבל זה ניחא, בעיות של ווינדוס, כנראה.
        השאלה היא, כשאני מופנה לאתר הראשון, האתר מקבל כתובת עם /a.
        נניח אני רוצה:

          /assets/img/1.jpg
        

        האתר יקבל :

          /a/assets/img/1.jpg
        

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

        תגובה 1 תגובה אחרונה
        0
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          כתב ב נערך לאחרונה על ידי
          #8
          1. אני לא מבין, אצלי זה ממש לא ככה.
            אולי אתה לא כותב start nginx אלא nginx לבד.

          2. אולי זה תלוי ב1, שוב, אצלי הכל חלק.

          3. בקשר ל/a ו/b זה בדיוק אבל בדיוק מה שביקשת בפתיחת האשכול, אז איך זה הפך לבעיה? אולי לא הבנתי אותך. עכ"פ אם אתה צריך להחליט לפי מה אתה רוצה לנתב את שתי האפליקציות. מלבד האפשרות לפי path אתה יכול:

          • לנתב לפי דומיין/סאב דומיין, למשל a.mysite.com וmysite.com שזה הכי נפוץ - לשם כך תוסיף server - עם אותם הגדרות - ובserver_name תכתוב את הדומיין המתאים, ובלוקיישן תכתוב רק / לבד, ובproxy_pass את הlocalhost עם הפורט הרלוונטי).
          • לנתב לפי פורט (כנ"ל, רק במקום לשנות בserver_name תשנה בport מ80 לאחר).

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

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

          מנצפךמ תגובה 1 תגובה אחרונה
          2
          • מנצפךמ מנותק
            מנצפךמ מנותק
            מנצפך
            השיב לdovid ב נערך לאחרונה על ידי
            #9

            @dovid
            1 2 הסתדר. תודה.
            3. קח לדוגמא את האתר של נטפרי, netfree.link. יש את הדף נחיתה, ויש את דף ההגדרות.
            נניח לצורך העניין שאלו 2 אתרים שונים, כל אחד יושב על פורט אחר.
            אני רוצה שכשיבקשו את http://netfree.link/user יקבלו את האתר השני.
            מה הדרך לעשות את זה?
            אני רוצה לנסות את הדרך השניה שכתבת (לפי סאב דומיין). אך לא כ"כ הבנתי. ב server הראשון לכתוב ב server_name:
            localhost?

            אני מצרף את הקובץ כמו שהוא אחרי השינויים:

            #user  nobody;
            
            worker_processes  1;
            
            
            
            #error_log  logs/error.log;
            
            #error_log  logs/error.log  notice;
            
            #error_log  logs/error.log  info;
            
            
            
            #pid        logs/nginx.pid;
            
            
            
            
            
            events {
            
                worker_connections  1024;
            
            }
            
            
            
            
            
            http {
            
                include       mime.types;
            
                default_type  application/octet-stream;
            
            
            
                #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
            
                #                  '$status $body_bytes_sent "$http_referer" '
            
                #                  '"$http_user_agent" "$http_x_forwarded_for"';
            
            
            
                #access_log  logs/access.log  main;
            
            
            
                sendfile        on;
            
                #tcp_nopush     on;
            
            
            
                #keepalive_timeout  0;
            
                keepalive_timeout  65;
            
            
            
                #gzip  on;
            
            
            
                server {
            
                    listen       890;
            
                    server_name  localhost;
            
            
            
                    #charset koi8-r;
            
            
            
                    #access_log  logs/host.access.log  main;
            
            
            
                   location /a {
            
                proxy_set_header X-Real-IP $remote_addr;
            
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            
                proxy_set_header Host $http_host;
            
                proxy_set_header X-NginX-Proxy true;    
            
                proxy_pass http://localhost:3000;
            
                proxy_redirect off;    
            
                proxy_http_version 1.1;
            
                proxy_set_header Upgrade $http_upgrade;
            
                proxy_set_header Connection "upgrade";
            
              }    
            
            
            
                    #error_page  404              /404.html;
            
            
            
                    # redirect server error pages to the static page /50x.html
            
                    #
            
                    error_page   500 502 503 504  /50x.html;
            
                    location = /50x.html {
            
                        root   html;
            
                    }
            
            
            
                    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            
                    #
            
                    #location ~ \.php$ {
            
                    #    proxy_pass   http://127.0.0.1;
            
                    #}
            
            
            
                    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            
                    #
            
                    #location ~ \.php$ {
            
                    #    root           html;
            
                    #    fastcgi_pass   127.0.0.1:9000;
            
                    #    fastcgi_index  index.php;
            
                    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            
                    #    include        fastcgi_params;
            
                    #}
            
            
            
                    # deny access to .htaccess files, if Apache's document root
            
                    # concurs with nginx's one
            
                    #
            
                    #location ~ /\.ht {
            
                    #    deny  all;
            
                    #}
            
                }
            
              server {
            
                    listen       890;
            
                    server_name  a20.localhost;
            
            
            
                    #charset koi8-r;
            
            
            
                    #access_log  logs/host.access.log  main;
            
            
            
                   location / {
            
                proxy_set_header X-Real-IP $remote_addr;
            
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            
                proxy_set_header Host $http_host;
            
                proxy_set_header X-NginX-Proxy true;    
            
                proxy_pass http://localhost:3000;
            
                proxy_redirect off;    
            
                proxy_http_version 1.1;
            
                proxy_set_header Upgrade $http_upgrade;
            
                proxy_set_header Connection "upgrade";
            
              }    
            
            
            
                    #error_page  404              /404.html;
            
            
            
                    # redirect server error pages to the static page /50x.html
            
                    #
            
                    error_page   500 502 503 504  /50x.html;
            
                    location = /50x.html {
            
                        root   html;
            
                    }
            
            
            
                    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            
                    #
            
                    #location ~ \.php$ {
            
                    #    proxy_pass   http://127.0.0.1;
            
                    #}
            
            
            
                    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            
                    #
            
                    #location ~ \.php$ {
            
                    #    root           html;
            
                    #    fastcgi_pass   127.0.0.1:9000;
            
                    #    fastcgi_index  index.php;
            
                    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            
                    #    include        fastcgi_params;
            
                    #}
            
            
            
                    # deny access to .htaccess files, if Apache's document root
            
                    # concurs with nginx's one
            
                    #
            
                    #location ~ /\.ht {
            
                    #    deny  all;
            
                    #}
            
                }
            
            
            
                # another virtual host using mix of IP-, name-, and port-based configuration
            
                #
            
                #server {
            
                #    listen       8000;
            
                #    listen       somename:8080;
            
                #    server_name  somename  alias  another.alias;
            
            
            
                #    location / {
            
                #        root   html;
            
                #        index  index.html index.htm;
            
                #    }
            
                #}
            
            
            
            
            
                # HTTPS server
            
                #
            
                #server {
            
                #    listen       443 ssl;
            
                #    server_name  localhost;
            
            
            
                #    ssl_certificate      cert.pem;
            
                #    ssl_certificate_key  cert.key;
            
            
            
                #    ssl_session_cache    shared:SSL:1m;
            
                #    ssl_session_timeout  5m;
            
            
            
                #    ssl_ciphers  HIGH:!aNULL:!MD5;
            
                #    ssl_prefer_server_ciphers  on;
            
            
            
                #    location / {
            
                #        root   html;
            
                #        index  index.html index.htm;
            
                #    }
            
                #}
            
            
            
            }
            
            תגובה 1 תגובה אחרונה
            0
            • מנצפךמ מנותק
              מנצפךמ מנותק
              מנצפך
              כתב ב נערך לאחרונה על ידי
              #10

              גם לא הבנתי מה המשמעות ב - server_name. הרי זה לכאורה מתייחס למכונה שעליה הוא יושב. לא? (תמיד localhost). משהו פה לא ברור לי.

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

                @מנצפך אמר בניתוב בין 2 אתרים:

                גם לא הבנתי מה המשמעות ב - server_name. הרי זה לכאורה מתייחס למכונה שעליה הוא יושב. לא? (תמיד localhost). משהו פה לא ברור לי.

                לא. server_name אומר שאם השם של הhost בבקשה תואם למה שכתוב רק אז יוחל מקטע הserver הנוכחי. אם כתוב localhost זה בחיים לא יגיע מבחוץ. אם מושמט הserver_name הכל מתאים (כמו binding * בIIS).

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

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

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

                  בנטפרי הnetfree.link/user הוא חלק מאותה אפליקציה בדיוק רק שהresponse מחזיר תשובה אחרת, במקרה הזה קבצים סטטיים.
                  אם החלוקה שלך היא בין netfree.link לwiki.netfree.link אז הדרך היא ע"י שתי סרברים אם server_name שונה. אם החלוקה שלך היא בין netfree.link/a לבין netfree.link אז אתה משתמש עם server אחד רק עם שתי מקטעי location, אחד /, והשני /a כמו שהראיתי בהדגמה הראשונה.

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

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

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

                    @dovid מהי ההגדרה של server_name? כלומר, מאיפה ה- nginx מקבל את ה - servername בבקשה?
                    אם אני מבין נכון זה עובד כך:
                    הדפדפן שולח בקשה. ב Header "host" כתוב הדומיין. ואז ה- nginx בודק לאיזה סרבר זה מתאים, ואם נניח זה ה סאב דומיין, הוא מפנה אליו. אז הכל מתחיל מה Header הנ"ל. אני צודק? תודה.
                    (האמת שניסיתי להוריד לגמרי את ה Server_name או לפברק משהו וזה עדיין עובד, אז אני מניח שזה עובד קצת שונה.)

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

                      אתה היטבת לומר.

                      אם הורדת את הserver_name ברור שזה יעבוד, אדרבא, קיום ההגדרה של הserver_name באה להגביל. אם פיברקת אני לא יודע איך עובד לך, אולי יש לך מקטע server אחר שמחמתו זה ממשיך לעבוד.

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

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

                      מנצפךמ תגובה 1 תגובה אחרונה
                      1
                      • מנצפךמ מנותק
                        מנצפךמ מנותק
                        מנצפך
                        השיב לdovid ב נערך לאחרונה על ידי
                        #15

                        @dovid לא הצלחתי לעשות סאב דומיין.
                        דבר ראשון ה - server_name לא משנה כלום. לא מעלה ולא מוריד. גם כשחירבשתי משהו הוא עבד היטב (בעצם הוא מתעלם מזה תמיד). ממילא אני לא מצליח לעשות סאב דומיין.

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

                          תעלה את הקובץ

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

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

                          מנצפךמ תגובה 1 תגובה אחרונה
                          0
                          • מנצפךמ מנותק
                            מנצפךמ מנותק
                            מנצפך
                            השיב לdovid ב נערך לאחרונה על ידי
                            #17

                            @dovid לא יודע איך לעשות הזחה אוטומטית בקובץ הזה. מקווה שתסתדר.

                            worker_processes  1;
                            

                            events {
                            worker_connections 1024;
                            }
                            http {
                            include mime.types;
                            default_type application/octet-stream;

                            #access_log  logs/access.log  main;
                            
                            sendfile        on;
                            #tcp_nopush     on;
                            
                            keepalive_timeout  65;
                            
                            server {
                            

                            listen 80;

                                server_name my.co.il;
                            
                               location / {
                            

                            proxy_set_header X-Real-IP $remote_addr;
                            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                            proxy_set_header Host $http_host;
                            proxy_set_header X-NginX-Proxy true;
                            proxy_pass http://localhost:3000;

                            proxy_redirect off;
                            proxy_http_version 1.1;
                            proxy_set_header Upgrade $http_upgrade;
                            proxy_set_header Connection "upgrade";
                            }

                            }
                            

                            server {
                            listen 80;

                                server_name  a.my.co.il;
                            	
                               location / {
                            

                            proxy_set_header X-Real-IP $remote_addr;

                            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                            proxy_set_header Host $http_host;

                            proxy_set_header X-NginX-Proxy true;

                            proxy_pass http://localhost:3000;

                            proxy_redirect off;

                            proxy_http_version 1.1;

                            proxy_set_header Upgrade $http_upgrade;

                            proxy_set_header Connection "upgrade";

                            }
                            }

                            }

                            תגובה 1 תגובה אחרונה
                            0
                            • מנצפךמ מנותק
                              מנצפךמ מנותק
                              מנצפך
                              כתב ב נערך לאחרונה על ידי
                              #18

                              @dovid מקווה שכך יותר ברור
                              0_1522272405077_conf.txt

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

                                אכן טעיתי:

                                If its value does not match any server name, or the request does not contain this header field at all, then nginx will route the request to the default server for this port. In the configuration above, the default server is the first one — which is nginx’s standard default behaviour.
                                מקור: http://nginx.org/en/docs/http/request_processing.html

                                כלומר אם הבקשה לא מתאימה לאף server_name אז הראשון (או זה שצויין ברירת מחדל) לוקח.
                                כדי למנוע את זה הם כותבים בהמשך, מוסיפם עוד סרבר שהserver_name שלו ריק. אם רוצים שלמבקש לא תהיה אף תשובה, אז כותבים return 444.

                                server {
                                    listen      80;
                                    server_name "";
                                    return      444;
                                }
                                

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

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

                                תגובה 1 תגובה אחרונה
                                1
                                • מנצפךמ מנותק
                                  מנצפךמ מנותק
                                  מנצפך
                                  כתב ב נערך לאחרונה על ידי
                                  #20

                                  @dovid היתה לי טעות שלא הגדרתי רשומת A לסאב דומיין. מקווה שעכשיו זה יעבוד.

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

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

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

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