web-dev-qa-db-fra.com

Domaine proxy Nginx vers un autre domaine sans changement d'URL

Ma question est dans le subj. J'ai un seul domaine, c'est la configuration de 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;
}
}

J'ai besoin d'un proxy connect3.domain.ru Host pour connect2.domain.ru, mais sans URL modifiée dans les barres d'adresse du navigateur. Ma ligne de réécriture commentée pourrait résoudre ce problème, mais ce n'est qu'une réécriture, donc je ne peux pas rester avec la même URL.

Je sais que cette question est facile, mais aidez-moi. Je vous remercie.

19
Evgenii Iablokov

Vous définissez:

proxy_set_header Host $Host;

Tu veux:

proxy_set_header Host connect2.domain.ru;
27
VBart

Je pense donc - voici la solution si j'ai bien compris le problème:

 # 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/; 
  }
}
8
Antiarchitect

La télépathie sur le port 8080 a été désactivée, car vous ne nous montrez pas la configuration complète.

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;
    }
}
6
cadmi