Nginx proxy etki alanı, değişiklik URL'si olmayan başka bir etki alanına


18

Benim sorum subj. Tek bir etki alanım var, bu nginx'in yapılandırması:

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 için proxy connect3.domain.ru ana bilgisayarına ihtiyacım var, ancak tarayıcının adres çubuklarında URL değişmedi. Benim yeniden yazma satırım bu sorunu çözebilir, ama bu sadece bir yeniden yazma, bu yüzden aynı URL ile kalamam.

Bu sorunun kolay olduğunu biliyorum, ama lütfen yardım edin. Teşekkür ederim.

Yanıtlar:


26

Siz ayarlayın:

proxy_set_header Host $host;

İstediğiniz:

proxy_set_header Host connect2.domain.ru;

Ve hepsi bu? Proxy_pass değiştirmem gerekiyor 127.0.0.1:8080 ; proxy_pass'a connect2.etkialanı.ru: 8080 ; ? Ya da sadece olduğu gibi yeniden yazmayı yorumlayın ve proxy_set_header'ı değiştirin?
Evgenii Iablokov

Bunu denedim. Hayır, URL değişir.
Evgenii Iablokov

1
Ya da sadece olduğu gibi yeniden yazmayı yorumlayın ve proxy_set_header'ı değiştirin? Yeap.
VBart

7

Bence - sorunu doğru anladıysam çözüm burada:

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

Bu çalışıyor mu? Veya proxy_redirect yapsanız bile proxy_pass yönergesine mi ihtiyacınız var?
Vincent De Smet

6

8080 numaralı bağlantı noktasıyla ilgili telepati kapatıldı, çünkü bize tam yapılandırmayı göstermiyorsunuz.

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;
    }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.