歡迎您光臨本站 註冊首頁

nginx反向代理--url不跳轉

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

nginx反向代理--url不跳轉

文字表達能力有限,其中有問題的話歡迎大家指出~

這裡所有的實驗,由於沒有DNS,所以不論當test1.com是本機187或者是另一台機器189時,在187上都要寫
192.168.1.18x    test1.com

反向代理:192.168.1.187 (開始的試驗中沒有189的存在,反向和web都在187上做)
web:192.168.1.189

nginx地址重寫后,頁面URL改變實例:
全都在187上面測試
訪問 http://test.com/test.html內容是test1.com的root路徑下的內容,但是頁面url也跳轉成http://test1.com/test.html

server {
    server_name  test.com;
    location / {
    root html;
    }
    location ~ /test.html {
    rewrite (.*) http://test1.com$1;
    }
}

server {
    server_name  test1.com;
    location / {
    root html/test;
    }
  }
}

nginx地址重寫后,頁面URL不改變實例:
訪問 http://test.com/test.html內容是test1.com的root路徑下的內容,但是頁面url不跳轉
兩種寫法:
一:if判斷寫法
server {
    server_name  test.com;
    location / {
    root html;
    if ($request_uri ~ /test.html) {
    proxy_pass http://test1.com;
    }
  }
}

server {
    server_name  test1.com;
    location / {
    root html/test;
    }
  }
}
二:location寫法
server {
    server_name  test.com;
    location / {
    root html;
    }
    location /test.html {
    proxy_set_header  Host test1.com;
    proxy_redirect off;
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://test1.com;
  }
}

server {
    server_name  test1.com;
    location / {
    root html/test;
    }
  }
}

訪問http://test.com/test目錄下的內容,實際訪問是test1.com的root路徑下的內容,但是頁面url不跳轉
兩種寫法:
一:if判斷寫法
server {
    server_name  test.com;
    location / {
    root html;
    if ($request_uri ~ ^/test/(.*)$) {
    proxy_pass http://test1.com;
    }
  }
}

server {
    server_name  test1.com;
    location / {
    root html/test1;
    }
  }
}

二:location寫法
server {
    server_name  test.com;
    location / {
    root html;
    }
    location /test/ {
    proxy_set_header  Host test1.com;
    proxy_redirect off;
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://test1.com;
  }
}

server {
    server_name  test1.com;
    location / {
    root html/test1/;
    }
  }
}


兩台機器測試,訪問 http://test.com/test.html(192.168.1.187)內容是test1.com(192.168.1.189)的root路徑下的內容,但是頁面url不跳轉
訪問目錄同理。
192.168.1.187配置:
upstream test1 {
server 192.168.1.189;
}

server {
    server_name  test.com;
    location / {
    root html;
    }
    location /test.html {
    proxy_set_header  Hosttest1.com;    #這裡原本是proxy_set_header  Host $host;但是這裡$host
                                          是test.com,傳到189上的時候還是test.com,而189上並沒有
                                          test.com域名,並且我們要proxy_pass過去訪問的是
                                          test1.com。所以這裡手動將$host寫成test1.com
    proxy_redirect off;
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://test1;
    }
  }
}

192.168.1.189配置:
server {
     listen 80;
     server_name test1.com;
     access_log off;
     root html;

    location ~ /test.html {
    root html;
    }
  }
}

[火星人 ] nginx反向代理--url不跳轉已經有1455次圍觀

http://coctec.com/docs/service/show-post-2159.html