• nginx反向代理location和proxy_pass的映射关系


    配置nginx反向代理时,总是需要尝试多次才能配置成功,通过本文做个记录,方便以后查看。

    1. proxy_pass 只有主机地址时

    只有主机地址的意思是,proxy_pass 值为 http://host:port 这种形式,url部分没有 //xxx 等.
    对应到本文示例就是 http://backend

    这种情况下,相当于下面的公式:

    backend url = proxy_pass + path

    这种情况下,请求的 path 部分会直接追加到 proxy_pass 地址后,相当于把nginx地址一对一的映射到了后端地址,这种配置方式理解最简单。

    locationproxy_passpathnginx urlbackend url
    /http://backend/http://nginx/http://backend/
    /http://backend/hellohttp://nginx/hellohttp://backend/hello
    /http://backend/hello/worldhttp://nginx/hello/worldhttp://backend/hello/world
    locationproxy_passpathnginx urlbackend url
    /ahttp://backend/ahttp://nginx/ahttp://backend/a
    /ahttp://backend/abhttp://nginx/abhttp://backend/ab
    /ahttp://backend/a/http://nginx/a/http://backend/a/
    /ahttp://backend/a/bhttp://nginx/a/bhttp://backend/a/b
    /ahttp://backend/a/b/http://nginx/a/b/http://backend/a/b/
    locationproxy_passpathnginx urlbackend url
    /b/http://backend/b/http://nginx/b/http://backend/b/
    /b/http://backend/b/ahttp://nginx/b/ahttp://backend/b/a
    /b/http://backend/b/a/http://nginx/b/a/http://backend/b/a/

    2. proxy_pass 带路径时

    这种情况下,相当于下面的公式:

    backend url = proxy_pass + (path - location)

    path 部分减去匹配的 location 部分后,剩余内容追加到 proxy_pass 上去请求。

    如果不是为了 /u 去匹配 /uv 这种路径,使用 /v/ 去匹配 /v/w 这种更准确,不会出现 // 这种情况。

    locationproxy_passpathnginx urlbackend url
    /uhttp://backend//uhttp://nginx/uhttp://backend/
    /uhttp://backend//uvhttp://nginx/uvhttp://backend/v
    /uhttp://backend//u/http://nginx/u/http://backend//
    /uhttp://backend//u/vhttp://nginx/u/vhttp://backend//v
    /uhttp://backend//u/v/http://nginx/u/v/http://backend//v/
    locationproxy_passpathnginx urlbackend url
    /v/http://backend//v/http://nginx/v/http://backend/
    /v/http://backend//v/whttp://nginx/v/whttp://backend/w
    /v/http://backend//v/w/http://nginx/v/w/http://backend/w/
    locationproxy_passpathnginx urlbackend url
    /chttp://backend/c/chttp://nginx/chttp://backend/c
    /chttp://backend/c/cdhttp://nginx/cdhttp://backend/cd
    /chttp://backend/c/c/http://nginx/c/http://backend/c/
    /chttp://backend/c/c/dhttp://nginx/c/dhttp://backend/c/d
    /chttp://backend/c/c/d/http://nginx/c/d/http://backend/c/d/
    locationproxy_passpathnginx urlbackend url
    /d/http://backend/d/d/http://nginx/d/http://backend/d
    /d/http://backend/d/d/ehttp://nginx/d/ehttp://backend/de
    /d/http://backend/d/d/e/http://nginx/d/e/http://backend/de/
    locationproxy_passpathnginx urlbackend url
    /ehttp://backend/e//ehttp://nginx/ehttp://backend/e/
    /ehttp://backend/e//efhttp://nginx/efhttp://backend/e/f
    /ehttp://backend/e//e/http://nginx/e/http://backend/e//
    /ehttp://backend/e//e/fhttp://nginx/e/fhttp://backend/e//f
    /ehttp://backend/e//e/f/http://nginx/e/f/http://backend/e//f/
    locationproxy_passpathnginx urlbackend url
    /f/http://backend/f//f/http://nginx/f/http://backend/f/
    /f/http://backend/f//f/ghttp://nginx/f/ghttp://backend/f/g
    /f/http://backend/f//f/g/http://nginx/f/g/http://backend/f/g/
    locationproxy_passpathnginx urlbackend url
    /ghttp://backend/m/ghttp://nginx/ghttp://backend/m
    /ghttp://backend/m/ghhttp://nginx/ghhttp://backend/mh
    /ghttp://backend/m/g/http://nginx/g/http://backend/m/
    /ghttp://backend/m/g/hhttp://nginx/g/hhttp://backend/m/h
    /ghttp://backend/m/g/h/http://nginx/g/h/http://backend/m/h/
    locationproxy_passpathnginx urlbackend url
    /h/http://backend/n/h/http://nginx/h/http://backend/n
    /h/http://backend/n/h/ihttp://nginx/h/ihttp://backend/ni
    /h/http://backend/n/h/i/http://nginx/h/i/http://backend/ni/
    locationproxy_passpathnginx urlbackend url
    /ihttp://backend/x//ihttp://nginx/ihttp://backend/x/
    /ihttp://backend/x//ijhttp://nginx/ijhttp://backend/x/j
    /ihttp://backend/x//i/http://nginx/i/http://backend/x//
    /ihttp://backend/x//i/jhttp://nginx/i/jhttp://backend/x//j
    /ihttp://backend/x//i/j/http://nginx/i/j/http://backend/x//j/
    locationproxy_passpathnginx urlbackend url
    /j/http://backend/y//j/http://nginx/j/http://backend/y/
    /j/http://backend/y//j/khttp://nginx/j/khttp://backend/y/k
    /j/http://backend/y//j/k/http://nginx/j/k/http://backend/y/k/
    locationproxy_passpathnginx urlbackend url
    /ws/http://backend/spring/ws//ws/qrloginhttp://nginx/ws/qrloginhttp://backend/spring/ws/qrlogin
    /ws/http://backend/spring/ws//ws/stomphttp://nginx/ws/stomphttp://backend/spring/ws/stomp

    参考文档:

  • 相关阅读:
    JS基础--强制类型转换(易错点,自用)
    生产者-消费者问题
    问遍了身边的面试官朋友,我整理出这份 Java 集合高频面试题(2021年最新版)
    Zookeeper 节点权限控制ACL详解
    linux C 简单线程池实现
    融合正弦余弦和无限折叠迭代混沌映射的蝴蝶优化算法-附代码
    TCP/IP 测试题(五)
    vue3+element Plus实现弹框的拖拽、可点击底层页面功能
    F28069的cpu定时器
    计算机组成原理_虚拟存储器
  • 原文地址:https://blog.csdn.net/isea533/article/details/126684452