缘来路过 发表于 2018-11-13 13:33:55

nginx proxy_pass末尾神奇的斜线

  http://backend;和http://backend/;有什么区别呢?
  location /service/ {
  proxy_pass   http://backend;
  proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
  }
  location /service/ {
  proxy_pass   http://backend/;
  proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
  }
  同样访问:http://neverstay.com/service/add.php
  前者配置,在后端的机器,收到的是http://neverstay.com/service/add.php
  后者配置,在后端的机器,收到的是http://neverstay.com/add.php
  如果换成下面这样,会报错:
  location ~ ^/(service)/ {
  proxy_pass   http://backend/;
  proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
  }
  "proxy_pass" may not have URI part in location given by regular expression, or inside named location, or inside the "if" statement, or inside the "limit_except" block in nginx.conf:
  但是,这样就没问题了:
  location ~ ^/(service)/ {
  proxy_pass   http://backend;
  proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
  }
  把proxy_pass末尾的斜线去掉,就可以了。

页: [1]
查看完整版本: nginx proxy_pass末尾神奇的斜线