/ / नेजिंक्स रिवर्स प्रॉक्सी और रिज़ॉल्वर के साथ जेनकींस - नाज़िनक्स, जेनकिंस, डोकर, प्रॉक्सी

जेनकिंस विथ नग्नेक्स रिवर्स प्रॉक्सी एंड रिसॉल्वर - नगेंक्स, जेनकिंस, डोकर, प्रॉक्सी

मैं एक Nginx रिवर्स प्रॉक्सी के पीछे डॉकर के अंदर जेनकींस चला रहा हूं। अब मुझे रिवाल्वर की समस्या हो गई।

जब मैं रिज़ॉल्वर को सक्रिय करता हूं:

set $backend "http://jenkins:8080/";
proxy_pass $backend;

मुझे सभी जावास्क्रिप्ट फ़ाइलों के लिए निम्नलिखित त्रुटि मिलेगी:

Refused to execute script from "http://localhost/static/....js" because its MIME type ("text/html") is not executable, and strict MIME type checking is enabled.

जब मैं बस रिज़ॉल्वर के बिना प्रॉक्सी पास करता हूं:

proxy_pass http://jenkins:8080/;

यह काम करता है लेकिन रिज़ॉल्वर के बिना। रिज़ॉल्वर अनिवार्य है अन्यथा सेटअप ने होस्ट के दौरान काम नहीं किया jenkins इसे बदल देता है Ip (डॉकर DNS सर्वर)।

मेरी विन्यास:

resolver 127.0.0.11  ipv6=off valid=30s;
client_max_body_size  100m;
keepalive_timeout     65;
types_hash_max_size   2048;

server {
listen       80 default_server;
listen       [::]:80 default_server;
server_name  _;
location / {
set $backend "http://jenkins:8080/";
proxy_pass $backend;
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;
}
}

उत्तर:

उत्तर № 1 के लिए 1

आपके द्वारा प्राप्त त्रुटि संदेश के आधार पर, ऐसा लगता है कि आप जावास्क्रिप्ट के स्थान पर HTML पृष्ठ प्राप्त कर रहे हैं।

इसका उपयोग करना proxy_pass एक चर के साथ प्रतिमान, आप "nginx को बता रहे हैं कि इसे" किसी भी मूल्य के साथ गड़बड़ नहीं करना चाहिए, उदा। location और URI, आपके बैकएंड के सभी अनुरोध हमेशा वैसा ही होगा जैसा कि वैरिएबल कहता है (जैसे, आपके मामले में समान URI के साथ)।


The सबसे अच्छा विकल्प शायद उपयोग करने के लिए होगा $uri, $is_args तथा $args, के अनुसार NGINX proxy_pass पथ उपसर्ग को हटाकर डीएनएस का संकल्प लिया:

-        set $backend "http://jenkins:8080/";
-        proxy_pass $backend;
+        proxy_pass http://jenkins:8080$uri$is_args$args;

एक अन्य विकल्प, जो संभवतः कम सुरक्षित हो सकता है, का उपयोग करने के लिए है $uri_request, जिसका अर्थ सादे की तुलना में थोड़ा अलग है $uri कुछ सीमित मामलों में, के अनुसार यूआरएल डिकोडिंग के बिना एनजीएनएक्स pass_proxy उपनिर्देशी:

proxy_pass http://jenkins:8080$request_uri;