nginx中的location路径配置(实路径和虚路径)

 更新时间:2024年06月19日 09:13:47   作者:叹人间,美中不足今方信  

这篇文章主要介绍了nginx中的location路径配置(实路径和虚路径),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

目录
  • nginx location路径配置(实路径和虚路径)
  • 实路径和虚路径?
    • 浏览器访问虚路径分析
    • 以浏览器访问实路径分析
  • 总结

    nginx location路径配置(实路径和虚路径)

    注:

    • 本文要说的不是location的配置规则和内容
    • 而是基于urlnginx代理转发的后端接口的路径配置

    实路径和虚路径?

    location配置路径时,是分实路径和虚路径的,并且路径会影响到proxy_pass转发时的路径。

    假如tomcat启动了一个名为online-registration的工程

    登录的后端接口如下所示:

    @RestController
    @RequestMapping("/user/login")
    public class UserLoginController {
    	@RequestMapping()
    	public Object login() {
    		return "success";
    	}
    }

    nginxlocation配置如下所示:

    自己测试时不要同时配置,避免混淆

    # 虚路径
    location /v1/online {
    	proxy_pass http://1.1.1.1:8080/online-registration/ ;
    }
    # 实路径
    location /v1/online/user {
    	proxy_pass http://1.1.1.1:8080/online-registration/user ;
    }

    结合接口的RequestMappingnginx配置来看:

    接口的路径是 /user/loginlocation配置的/v1/online为虚拟路径

    它的proxy_pass配置到tomcat启动的工程名即可,/v1/online/user路径中包含RequestMapping的关键字

    它的proxy_pass路径需要配置到工程名下的具体接口的路径。

    以浏览器访问虚路径分析

    location /v1/online {
    	proxy_pass http://1.1.1.1:8080/online-registration/ ;
    }

    访问http://1.1.1.1/v1/online/user/login

    nginx匹配url中的/v1/online

    nginx会将online后面的user/login自动的添加到proxy_pass转发的路径/online-registration/后面

    nginx转发的实际路径为: http://1.1.1.1:8080/online-registration/user/login

    正确的访问后端接口;

    以浏览器访问实路径分析

    location /v1/online/user {
    	proxy_pass http://1.1.1.1:8080/online-registration/user ;
    }

    访问http://1.1.1.1/v1/online/user/login,同虚路径的访问方式一致。

    但是如果proxy_pass的配置是http://1.1.1.1:8080/online-registration;

    那么nginx代理时

    转发的实际路径为:http://1.1.1.1:8080/online-registration/login

    如果你的项目只有/user/login接口,而没有/login接口时,就会出现访问异常。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持小闻网。

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。