server { 
    listen       80; 
    server_name  localhost; 
 
    location /api1/ { 
       proxy_pass http://localhost:8080; 
    } 
     
    # http://localhost/api1/xxx -> http://localhost:8080/api1/xxx 
 
 
    location /api2/ { 
       proxy_pass http://localhost:8080/; 
    } 
     
    # http://localhost/api2/xxx -> http://localhost:8080/xxx 
 
 
    location /api3 { 
        proxy_pass http://localhost:8080; 
    } 
     
    # http://localhost/api3/xxx -> http://localhost:8080/api3/xxx 
 
 
    location /api4 { 
        proxy_pass http://localhost:8080/; 
    } 
     
    # http://localhost/api4/xxx -> http://localhost:8080//xxx,请注意这里的双斜线,好好分析一下。 
 
 
    location /api5/ { 
        proxy_pass http://localhost:8080/haha; 
    } 
     
    # http://localhost/api5/xxx -> http://localhost:8080/hahaxxx,请注意这里的haha和xxx之间没有斜杠,分析一下原因。 
 
    location /api6/ { 
        proxy_pass http://localhost:8080/haha/; 
    } 
     
    # http://localhost/api6/xxx -> http://localhost:8080/haha/xxx 
 
    location /api7 { 
        proxy_pass http://localhost:8080/haha; 
    } 
     
    # http://localhost/api7/xxx -> http://localhost:8080/haha/xxx 
 
    location /api8 { 
        proxy_pass http://localhost:8080/haha/; 
    } 
     
    # http://localhost/api8/xxx -> http://localhost:8080/haha//xxx,请注意这里的双斜杠。 
}

在 nginx 中配置 proxy_pass 时,当在后面的url加上了 /,相当于是绝对根路径,则 nginx 不会把 location 中匹配的路径部分代理走;

如果没有 /,则会把匹配的路径部分也给代理走;

参考链接:IT虾米网


发布评论
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Nginx 安装 echo-nginx-module 模块详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。