Tên miền Nginx proxy sang tên miền khác không có URL thay đổi


18

Câu hỏi của tôi là trong subj. Tôi có một tên miền, đó là cấu hình của 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;
}
}

Tôi cần proxy proxy host3.domain.ru lưu trữ để connect2.domain.ru, nhưng không có URL nào thay đổi trong thanh địa chỉ của trình duyệt. Dòng nhận xét viết lại của tôi có thể giải quyết vấn đề này, nhưng nó chỉ là viết lại, vì vậy tôi không thể ở cùng một URL.

Tôi biết rằng câu hỏi này là dễ dàng, nhưng xin vui lòng giúp đỡ. Cảm ơn bạn.

Câu trả lời:


26

Bạn cài:

proxy_set_header Host $host;

Bạn muốn:

proxy_set_header Host connect2.domain.ru;

Và đó là tất cả? Cần tôi thay đổi proxy_pass 127.0.0.1:8080 ; đến proxy_pass connect2.domain.ru:8080 ; ? Hoặc chỉ cần bình luận viết lại như nó là và thay đổi proxy_set_header?
Evgenii Iablokov

Đã thử điều này. Không, URL thay đổi.
Evgenii Iablokov

1
Hoặc chỉ nhận xét viết lại như nó là và thay đổi proxy_set_header? Yeap.
VBart

7

Vì vậy, tôi nghĩ rằng - đây là giải pháp nếu tôi hiểu đúng vấn đề:

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

cái này có hoạt động không Hoặc bạn cũng cần chỉ thị proxy_pass ngay cả khi bạn thực hiện proxy_redirect?
Vincent De Smet

6

Thần giao cách cảm về cổng 8080 đã bị tắt, vì bạn không cho chúng tôi xem cấu hình đầy đủ.

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;
    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.