美文网首页
nginx中配置proxy_pass详解,末尾带不带斜杠/的区别

nginx中配置proxy_pass详解,末尾带不带斜杠/的区别

作者: 萤火虫叔叔 | 来源:发表于2022-03-03 19:54 被阅读0次

    前言:网上查了很多文章,确实有很多帖子详细列出了四种情况,然后举例子说明它们的区别,我看了几个帖子后依旧很乱,而且没有说明理由,很难记住。我自己经过多次试验,终于弄明白了,其实很简单,只有两种情况。

    先上结论,一句话概括为:proxy_pass不带uri直接照搬,带uri则去掉location后拼接到proxy_pass上。听不懂没关系,简短的描述是为了方便记忆,请往下看

    其中,/, /api, /api/, /api/user, /api/user/都叫uri,(注意:单个的斜杠/也是uri)。

    一、不带uri

    {
      listen  8000;
      server_name  localhost;
      location /api/ {
        proxy_pass  http://localhost:8001;
    }
    

    把地址和端口一换,其他照搬。所以请求http://localhost:8000/api/user/login等同于请求http://localhost:8001/api/user/login

    二、带uri

    {
      listen  8000;
      server_name  localhost;
      location /api/ {
        proxy_pass  http://localhost:8001/;
        # proxy_pass  http://localhost:8001/user;
        # proxy_pass  http://localhost:8001/user/;
    }
    

    请求http://localhost:8000/api/user/login,首先把请求中的uri去掉location,即/api/user/login去掉/api/后得到user/login,然后:

    • user/login拼接到http://localhost:8000/后得http://localhost:8000/user/login
    • user/login拼接到http://localhost:8000/user后得http://localhost:8000/useruser/login
    • user/login拼接到http://localhost:8000/user/后得http://localhost:8000/user/user/login

    这三种情况其实适用于同一条规则。

    相关文章

      网友评论

          本文标题:nginx中配置proxy_pass详解,末尾带不带斜杠/的区别

          本文链接:https://www.haomeiwen.com/subject/naeurrtx.html