Nginx-Proxy-Domain zu einer anderen Domain ohne Änderung der URL

18

Meine Frage steht in der Betreffzeile. Ich habe eine Domain, das ist die Konfiguration von 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;
}
}

Ich muss connect3.domain.ru als Proxy für connect2.domain.ru verwenden, aber in den Adressleisten des Browsers wurde keine URL geändert. Meine auskommentierte Umschreibezeile könnte dieses Problem lösen, aber es ist nur eine Umschreibung, daher kann ich nicht bei derselben URL bleiben.

Ich weiß, dass diese Frage einfach ist, aber bitte helfen Sie. Vielen Dank.

Evgenii Iablokov
quelle

Antworten:

26

Sie setzen:

proxy_set_header Host $host;

Sie wollen:

proxy_set_header Host connect2.domain.ru;
VBart
quelle
Und das ist alles? Muss ich proxy_pass ändern 127.0.0.1:8080 ; zu proxy_pass connect2.domain.ru:8080 ; ? Oder einfach auskommentieren, umschreiben wie es ist und proxy_set_header ändern?
Evgenii Iablokov
Versuchte dies. Nein, die URL ändert sich.
Evgenii Iablokov
1
Oder einfach auskommentieren, umschreiben wie es ist und proxy_set_header ändern? Yeap.
VBart
7

Also denke ich - hier ist die Lösung, wenn ich das Problem richtig verstanden habe:

 # 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/; 
  }
}
Antiarchitekt
quelle
Funktioniert das? Oder benötigen Sie auch die Anweisung proxy_pass, selbst wenn Sie eine proxy_redirect-Anweisung ausführen?
Vincent De Smet
6

Die Telepathie für Port 8080 wurde deaktiviert, da Sie uns nicht die vollständige Konfiguration anzeigen.

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;
    }
}
Cadmi
quelle