मैं एक 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;