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