Nginx proxy domain ke domain lain tanpa perubahan URL

18

Pertanyaan saya ada di subjek. Saya punya satu domain, itu konfigurasi 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;
}
}

Saya perlu mem-host proksi connect3.domain.ru ke connect2.domain.ru, tetapi tanpa URL diubah di bilah alamat browser. Baris penulisan ulang yang saya komentari dapat menyelesaikan masalah ini, tetapi ini hanya penulisan ulang, jadi saya tidak dapat tetap menggunakan URL yang sama.

Saya tahu bahwa pertanyaan ini mudah, tetapi tolong bantu. Terima kasih.

Evgenii Iablokov
sumber

Jawaban:

26

Anda mengatur:

proxy_set_header Host $host;

Kamu ingin:

proxy_set_header Host connect2.domain.ru;
VBart
sumber
Dan itu saja? Perlu saya mengubah proxy_pass 127.0.0.1:8080 ; ke proxy_pass connect2.domain.ru:8080 ; ? Atau komentar saja penulisan ulang apa adanya dan ubah proxy_set_header?
Evgenii Iablokov
Sudah mencoba ini. Tidak, perubahan URL.
Evgenii Iablokov
1
Atau komentar saja penulisan ulang apa adanya dan ubah proxy_set_header? Yap.
VBart
7

Jadi saya pikir - inilah solusinya jika saya memahami masalahnya dengan benar:

 # 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/; 
  }
}
Antiarchitect
sumber
apakah ini berhasil? Atau apakah Anda juga memerlukan direktif proxy_pass bahkan jika Anda melakukan proxy_redirect?
Vincent De Smet
6

Telepati tentang port 8080 telah dimatikan, karena Anda tidak menunjukkan kepada kami konfigurasi penuh.

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
sumber