कोई परिवर्तन नहीं URL के साथ किसी अन्य डोमेन के लिए Nginx प्रॉक्सी डोमेन


18

मेरा सवाल सबज में है। मेरे पास एक डोमेन है, यह nginx का विन्यास है:

server {
listen 80;
server_name connect3.domain.ru www.connect3.domain.ru;

access_log /var/log/nginx/connect3.domain.ru.access.log;
error_log /var/log/nginx/connect3.domain.ru.error.log;

root /home/httpd/vhosts/html;
index index.html index.htm index.php;

location ~* \.(avi|bin|bmp|css|dmg|doc|docx|dpkg|exe|flv|gif|htm|html|ico|ics|img|jpeg|jpg|js|m2a|m2v|mov|mp3|mp4|mpeg|mpg|msi|pdf|pkg|png|pps|ppt|pptx|ps|rar|rss|rtf|swf|tif|tiff|txt|wmv|xhtml|xls|xml|zip)$ {
    root /home/httpd/vhosts/html;
    access_log off;
    expires 1d;
}

location ~ /\.(git|ht|svn) {
    deny all;
}

location / {
    #rewrite ^ http://connect2.domain.ru/;
    proxy_pass http://127.0.0.1:8080/;
    proxy_redirect off;
    proxy_hide_header "Cache-Control";
    add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
    proxy_hide_header "Pragma";
    add_header Pragma "no-cache";
    expires -1;
    add_header Last-Modified $sent_http_Expires;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

मुझे Connect2.domain.ru से Connect3.domain.ru होस्ट को प्रॉक्सी करने की आवश्यकता है, लेकिन ब्राउज़र के एड्रेस बार में कोई URL नहीं बदला। मेरी पुनः लिखी गई पंक्ति इस समस्या को हल कर सकती है, लेकिन यह सिर्फ एक पुनर्लेखन है, इसलिए मैं एक ही URL के साथ नहीं रह सकता।

मुझे पता है कि यह सवाल आसान है, लेकिन कृपया मदद करें। धन्यवाद।

जवाबों:


26

आप सेट हैं:

proxy_set_header Host $host;

तुम्हें चाहिए:

proxy_set_header Host connect2.domain.ru;

और बस यही? मुझे प्रॉक्सी_पास 127.0.0.1.18080 बदलने की आवश्यकता है ; toxy_pass connect2.domain.ru:8080 ; ? या इसे फिर से लिखें जैसा कि यह है और प्रॉक्सी_सेट_हीडर को बदल दें?
इवगेनी इबलोकोव

इसकी कोशिश की। नहीं, URL बदलता है।
इवगेनी इबलोकोव

1
या इसे फिर से लिखें जैसा कि यह है और प्रॉक्सी_सेट_हीडर को बदल दें? यीप।
VBart

7

तो मुझे लगता है - यहाँ समाधान है अगर मैंने समस्या को सही ढंग से समझा:

 # backend.wants.this.server.com
 # browser.shows.this.server.com

server {
  listen 80;
  server_name browser.shows.this.server.com;

  location / {
     proxy_set_header Host backend.wants.this.server.com;
     proxy_redirect http://backend.wants.this.server.com/ http://browser.shows.this.server.com/; 
  }
}

क्या यह काम करता है? या क्या आपको प्रॉक्सी_पास निर्देश की आवश्यकता है, भले ही आप एक प्रॉक्सी_डायरेक्ट करें?
विंसेंट डी स्मेट

6

पोर्ट 8080 के बारे में टेलीपैथी को बंद कर दिया गया है, क्योंकि आप हमें पूर्ण कॉन्फ़िगरेशन नहीं दिखाते हैं।

server {
    listen 80;
    server_name connect3.domain.ru www.connect3.domain.ru;

    location / {
        proxy_pass http://connect2.domain.ru;
        proxy_set_header Host connect2.domain.ru;
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.