2015-02-17 3 views
6

कोशिश मैं एक आवेदन जो AngularJS और पूरे आवेदन भार का उपयोग करते समय जिले/फ़ोल्डर पहुँचा जा सकता है विकसित की है की है।nginx स्थिर से की सेवा करता है, तो नहीं मिला रिवर्स प्रॉक्सी

क्या कार्य करने की कोशिश कर रहा हूँ, यह है कि जब पेज AngularJS, एक रिवर्स प्रॉक्सी पर कोशिश करने के लिए पर नहीं पाया जाता, मैं नीचे सेटअप करने की कोशिश की लेकिन nginx सिंगल ब्लॉक

में दो बार एक ही स्थान की स्थापना की अनुमति नहीं है
server { 
    listen 80; 
    server_name example.com; 
    keepalive_timeout 60; 
    client_max_body_size 10M; 
    root /var/lib/www/dist; 
    charset utf-8; 

    location/{ 
     expires -1; 
     add_header Pragma "no-cache"; 
     add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"; 
     root /var/lib/www/dist; 
     try_files $uri $uri/ /index.html =404; 
    } 

    location/{ 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_buffering off; 
     proxy_http_version 1.1; 
     proxy_set_header Connection ""; 
     if (!-f $request_filename) { 
      proxy_pass http://app_root; 
      break; 
     } 
    } 

    error_page 500 502 503 504 /500.html; 
    location = /500.html { 
     root /var/lib/app/etc/templates; 
    } 

} 

तो बुनियादी तौर पर, यूआरएल AngularJS मैं इसे कोशिश करते हैं और यह proxy_pass http://app_root; किसी भी एक कैसे इस स्थापना को प्राप्त करने पर सलाह दे सकते को भेजना चाहते हैं पर 404'ed तो क्या होगा?

धन्यवाद,

अद्यतन

तो दृष्टिकोण "मोहम्मद AbuShady" द्वारा प्रस्तावित, और निम्न के लिए मेरे nginx सेटिंग्स अद्यतन, लेकिन अभी भी काम नहीं कर रहा कोशिश कर रहा हूँ, बजाय इसे में पेज खोजने की कोशिश करता AngularJS अनुप्रयोग और नहीं @proxy up_stream सेटअप करने के लिए ले जाने के

upstream app_root { 
    server unix:/tmp/app_root.sock fail_timeout=0; 
} 

server { 
    listen 80; 
    server_name example.com; 
    keepalive_timeout 60; 
    client_max_body_size 10M; 
    root /var/lib/www/dist; 
    charset utf-8; 

    location/{ 
     expires -1; 
     add_header Pragma "no-cache"; 
     add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"; 
     root /var/lib/www/dist; 
     try_files $uri$args $uri$args/ $uri/ /index.html @proxy; 
    } 

    location @proxy { 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_buffering off; 
     if (!-f $request_filename) { 
      proxy_pass http://app_root; 
      break; 
     } 
    } 

    error_page 500 502 503 504 /500.html; 
    location = /500.html { 
     root /var/lib/app/etc/templates; 
    } 

} 
+0

तो क्या हुआ जब आप 404 पृष्ठ प्रस्तुत करना की वास्तविक यूआरएल हो सकता है? –

उत्तर

8

आप इसे सोच से अधिक कर रहे हैं, एक ही स्थान इसे संभाल और फिर इसे एक fallback

location/{ 
    # omitted extra settings 
    # check notes below 
    try_files $uri @proxy; 
} 

location @proxy { 
    # omitted proxy settings 
    proxy_pass http://app_root; 
} 

नोट्स दे सकते हैं:

  1. स्थान के अंदर एक दूसरे रूट के लिए कोई ज़रूरत नहीं, यह पहले से ही परिभाषित किया है सर्वर ब्लॉक
  2. में मैं $uri/ हटा दिया है क्योंकि आप अपने सर्वर में index जरूरत नहीं है।
  3. मैं भी /index.html हटा दिया, आप सर्वर ब्लॉक में सूचकांक के रूप में यह निर्धारित कर सकते हैं आप तो इसका इस्तेमाल करना चाहते हैं, तो और डाल $uri/ वापस

    server { 
        index index.html; 
        location/{ 
        try_files $uri $uri/ @proxy; 
        } 
    } 
    
  4. मुझे नहीं पता कि जहां app_root है है, लेकिन मुझे लगता है कि यह कहीं और परिभाषित अपस्ट्रीम है।
+0

हैलो मोहम्मद, मैंने ऊपर प्रस्तावित आपसे संपर्क करने की कोशिश की, यह काफी काम नहीं कर सका, मैंने अपना प्रश्न अपडेट किया और nginx conf से अधिक जानकारी जोड़ दी .. क्या आप कृपया सलाह दे सकते हैं? –

+0

इस लाइन को 'try_files $ uri $ args $ uri $ args/$ uri//index.html @proxy; ' –

+0

इस पोस्ट से प्रेरित है https://gist.github.com/cjus/b46a243ba610661a7efb क्योंकि angularjs $ यूरी और $ indexs.html को प्रस्तुत करने के लिए तर्क देता है, मैंने विभिन्न मैनुअल से जोड़े के दृष्टिकोण की कोशिश की और यह केवल एक ही काम किया, दूसरों ने भी काम किया। लेकिन –

-1

कोशिश इस मो:

server { 
listen 80; 
server_name example.com; 
keepalive_timeout 60; 
client_max_body_size 10M; 
root /var/lib/www/dist; 
charset utf-8; 

location/{ 
    expires -1; 
    add_header Pragma "no-cache"; 
    add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"; 
    root /var/lib/www/dist; 
    try_files $uri $uri/ /index.html =404; 
    error_page 404 = @404; 
} 

location/{ 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    proxy_buffering off; 
    proxy_http_version 1.1; 
    proxy_set_header Connection ""; 
    if (!-f $request_filename) { 
     proxy_pass http://app_root; 
     break; 
    } 
} 

location @404 { 
    proxy_pass http://app_root; 
} 

error_page 500 502 503 504 /500.html; 
location = /500.html { 
    root /var/lib/app/etc/templates; 
} 

} 
संबंधित मुद्दे