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

2022-03-03  本文已影响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,然后:

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

上一篇 下一篇

猜你喜欢

热点阅读