虎泰克博客

Nginx之proxy_pass指令url反斜杠作用


在nginx中配置proxy_pass代理转发时;其后面的url中反斜杠/ 的匹配处理时常出现意想不到的问题发生;以下说明两种情况;如果在proxy_pass后面的url加/;表示绝对根路径; 如果在proxy_pass后面的url没有/;表示相对路径;把匹配的路径部分也给代理走。

下面六种情况分别用 http://127.0.0.1/proxy/test.html 进行访问测试

第一种情况:

location /proxy/ {
        proxy_pass http://127.0.0.1/;
}

最终会被代理到URL: http://127.0.0.1/test.html

第二种情况:相对于第一种 最后少一个 / 

location /proxy/ {    
    proxy_pass http://127.0.0.1;    
}

最终会被代理到URL: http://127.0.0.1/proxy/test.html

第三种情况:

location /proxy/ {    
    proxy_pass http://127.0.0.1/aaa/;    
}

最终会被代理到URL: http://127.0.0.1/aaa/test.html

第四种情况:相对于第三种 最后少一个 / 

location /proxy/ {    
    proxy_pass http://127.0.0.1/aaa;    
}

最终会被代理到URL: http://127.0.0.1/aaatest.html

* 第五种情况:定义了一个正则表达式;那么在URl部分没有转换发生:

location ~ ^/proxy/ {    
    proxy_pass http://127.0.0.1/aaa;    
}

最终会被代理到URL:http://127.0.0.1/proxy/test.html

最佳写法为:

location ~ ^/proxy/ {    
    proxy_pass http://127.0.0.1;    
}

* 第六种情况:有rewrite规则改变URl; 那也不会发生转换.

location /proxy/ { 
            rewrite   /proxy/(.*)$   /index.php?page=$1 break;    # break标记用于立即停止rewrite模块的所有指令
    proxy_pass http://127.0.0.1/aaa;    
}

最终会被代理到URL: http://127.0.0.1/index.php?page=test.html

最佳写法为:

location /proxy/ { 
            rewrite   /proxy/(.*)$   /index.php?page=$1 break;
    proxy_pass http://127.0.0.1;    
}


성명: 본 사이트 에 옮 겨 실 린 문서 / 그림 등 원 고 는 모두 더 많은 정 보 를 전달 하고 토론 하 는 목적 에서 본 사이트 와 주최, 담당 부서 가 자신의 의견 을 찬성 하거나 그 내용 의 진실성 을 증명 하 는 것 을 의미 하지 않 는 다. 글 의 내용 은 참고 로 제공 하고 원작 자의 권 리 를 침해 하면 사이트 관리자 에 게 연락 하 십시오.

로그인 으로 논평 을 발표하다

평론 목록

    일시 데이터 없음