변경 URL이없는 다른 도메인으로의 Nginx 프록시 도메인


18

내 질문은 subj에 있습니다. 나는 하나의 도메인을 가지고 있으며, 그것은 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;
}
}

connect3.domain.ru 호스트를 connect2.domain.ru로 프록시해야하지만 브라우저의 주소 표시 줄에서 URL이 변경되지 않았습니다. 주석 처리 된 다시 쓰기 줄 로이 문제를 해결할 수는 있지만 다시 쓰기 일뿐이므로 동일한 URL로 유지할 수 없습니다.

이 질문은 쉽다는 것을 알고 있지만 도와주세요. 감사합니다.

답변:


26

당신은 설정 :

proxy_set_header Host $host;

당신이 원하는 :

proxy_set_header Host connect2.domain.ru;

그리고 그게 다야? proxy_pass 127.0.0.1:8080을 변경해야 합니다 . proxy_pass로 connect2.domain.ru:8080 ; ? 아니면 그대로 다시 작성하고 proxy_set_header를 변경 하시겠습니까?
Evgenii Iablokov 2016 년

이것을 시도했다. 아니요, URL이 변경됩니다.
Evgenii Iablokov 2016 년

1
아니면 그대로 다시 작성하고 proxy_set_header를 변경 하시겠습니까?
VBart

7

그래서 나는 생각합니다-문제를 올바르게 이해하면 해결책이 있습니다.

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

이 작동합니까? 또는 proxy_redirect를 수행하더라도 proxy_pass 지시문이 필요합니까?
Vincent De Smet

6

전체 구성을 표시하지 않기 때문에 포트 8080에 대한 Telepathy가 해제되었습니다.

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;
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.