一、配置127.0.0.1:8081的tomcat下的文件:
1、ROOT/a.html : this is ROOT page
2、ROOT/testa.html : nihao
3、ROOT/index.html : this is ROOT index page
4、test/a.html : this is test page
5、test/index.html : this is test index page
二、nginx 的server_name配置如下:
1、proxy_pass的URI不帶路徑:
server {
listen 80;
server_name www.test.com;
location /nihao {
proxy_pass http://127.0.0.1:8081;
index index.html;
}
#location 后無/ proxy_pass 后無/ 代理到 http://127.0.0.1:8081/nihao/a.html
#curl http://www.test.com/nihao/a.html 因hello目錄不存在
#The requested resource is not available
location /test {
proxy_pass http://127.0.0.1:8081;
index index.html;
}
#location 后無/ proxy_pass 后無/ 代理到 http://127.0.0.1:8081/test/a.html
#curl http://www.test.com/test/a.html
#this is test page
location /hello/ {
proxy_pass http://127.0.0.1:8081;
index index.html;
}
#location 后有/ proxy_pass 后無/ 代理到 http://127.0.0.1:8081/hello/a.html
#curl http://www.test.com/hello/ 因hello目錄不存在
#The requested resource is not available
location /test/ {
proxy_pass http://127.0.0.1:8081;
index index.html;
}
#location 后有/ proxy_pass 后無/ 代理到 http://127.0.0.1:8081/test/a.html
#curl http://www.test.com/test/
#this is test index page
}
server {
listen 80;
server_name www.test1.com;
location /nihao {
proxy_pass http://127.0.0.1:8081/;
index index.html;
}
#location 后無/ proxy_pass 后有/ 代理到 http://127.0.0.1:8081/a.html
#curl http://www.test1.com/nihao/a.html
#this is ROOT page
location /test {
proxy_pass http://127.0.0.1:8081/;
index index.html;
}
#location 后無/ proxy_pass 后有/ 代理到 http://127.0.0.1:8081/a.html
#curl http://www.test1.com/test/a.html
#this is ROOT page
location /hello/ {
proxy_pass http://127.0.0.1:8081/;
index index.html;
}
#location 后有/ proxy_pass 后有/ 代理到 http://127.0.0.1:8081/index.html
#curl http://www.test1.com/hello/
#this is ROOT index page
location /test/ {
proxy_pass http://127.0.0.1:8081/;
index index.html;
}
#location 后有/ proxy_pass 后有/ 代理到 http://127.0.0.1:8081/index.html
#curl http://www.test1.com/test/
#this is ROOT index page
}
2、proxy_pass的URI帶路徑:
server {
listen 80;
server_name www.test.com;
location /nihao {
proxy_pass http://127.0.0.1:8081/test;
index index.html;
}
#location 后無/ proxy_pass 后無/ 代理到 http://127.0.0.1:8081/test/a.html
#curl http://www.test.com/nihao/a.html
#this is test page
#curl http://www.test.com/nihao
#this is test index page
location /test {
proxy_pass http://127.0.0.1:8081/test;
index index.html;
}
#location 后無/ proxy_pass 后無/ 代理到 http://127.0.0.1:8081/test//
#curl http://www.test.com/test 重定向為:http://www.test.com/test//
#指向此網址的請求無限循環重定向
location /hello/ {
proxy_pass http://127.0.0.1:8081/test;
index index.html;
}
#location 后有/ proxy_pass 后無/ 代理到 http://127.0.0.1:8081/testa.html
#curl http://www.test.com/hello/a.html
#nihao
#curl http://www.test.com/hello/ 重定向為:http://www.test.com/hello//
#指向此網址的請求無限循環重定向
location /test/ {
proxy_pass http://127.0.0.1:8081/test;
index index.html;
}
#location 后有/ proxy_pass 后無/ 代理到 http://127.0.0.1:8081/testa.html
#curl http://www.test.com/test/a.html
#nihao
#curl http://www.test.com/test/ 重定向為:http://www.test.com/test//
#指向此網址的請求無限循環重定向
}
server {
listen 80;
server_name www.test1.com;
location /nihao {
proxy_pass http://127.0.0.1:8081/test/;
index index.html;
}
#location 后無/ proxy_pass 后有/ 代理到 http://127.0.0.1:8081/test/a.html
#curl http://www.test1.com/nihao
#this is test index page
#curl http://www.test1.com/nihao/a.html
#this is test page
location /test {
proxy_pass http://127.0.0.1:8081/test/;
index index.html;
}
#location 后無/ proxy_pass 后有/ 代理到 http://127.0.0.1:8081/test/index.html
#curl http://www.test1.com/test
#this is test index page
location /hello/ {
proxy_pass http://127.0.0.1:8081/test/;
index index.html;
}
#location 后有/ proxy_pass 后有/ 代理到 http://127.0.0.1:8081/test/a.html
#curl http://www.test1.com/hello
#this is test index page
#curl http://www.test1.com/hello/a.html
#this is test page
location /test/ {
proxy_pass http://127.0.0.1:8081/test/;
index index.html;
}
#location 后有/ proxy_pass 后有/ 代理到 http://127.0.0.1:8081/test/a.html
#curl http://www.test1.com/test/a.html
#this is test page
}
三、總結:
在nginx中配置proxy_pass代理轉發時,如果在proxy_pass后面的url加/,表示絕對根路徑;如果沒有/,表示相對路徑,把匹配的路徑部分也給代理走。
proxy_pass的URI帶路徑中如果location的不帶/,最好proxy_pass也不帶;