Nginx 反向代理 proxy_url 加 / 和不加 / 的区别

本贴最后更新于 424 天前,其中的信息可能已经时过境迁

前言

Nginx 反向代理经常配,不过一直没搞清楚加/和不加/的区别,今天研究一下,做一下记录

URL 和 URI

要先搞清楚这两个概念:

URL 是完整的访问路径,包含 协议、域名(IP) 、端口、资源路径,比如:

URI 是去掉了协议、域名(IP)、端口之后剩下的东西。

比如上面的/index.html 就是 URI

所以 URI 是 URL 的一部分,URL 包含 URI

Nginx proxy_url

搞清楚了 URL 和 URI,我们再来看 proxy_url

一般有两种情况:proxy_url 带 uri 和不带 uri

举个例子:

http://127.0.0.1	不带uri
http://127.0.0.1:8080	不带uri
https://www.abc.com:9889 不带uri
http://127.0.0.1/	带uri,  后面只有有/都算uri

其实很简单,就看 proxy_url 后面带不带/,只要带了,就是包含 uri

proxy_url 不带 uri 的情况

会完整的代理 location

举个例子:

server {
  listen 80;
  server_name www.baidu.com;
  location /article/ {
  proxy_pass http://127.0.0.1:8080;
  }
}
访问 http://www.baidu.com/article/1.html 实际转发的路径是 http://127.0.0.1:8080/article/1.html

proxy_url 带 uri 的情况

使用 proxy_url 中的 uri 替换 location

举个例子:

server {
  listen 80;
  server_name www.baidu.com;
  location /article/ {
  proxy_pass http://127.0.0.1:8080/;
  }
}
此时 proxy_pass的uri是/,所以当匹配的时候,使用/替换 /article/
访问 https://www.baidu.com/article/1.html 实际转发路径是 http://127.0.0.1:8080/1.html

location

location 中 也会出现 加/和不加/的情况,这个相对简单,主要涉及是否匹配的问题

举几个例子:

location /article {
    proxy_pass http://127.0.0.1:8080;
    #访问 http://localhost/article/1.html  ==> http://127.0.0.1:8080/article/1.html
}

location /article/ {
	#注意访问http://localhost/article 不会匹配,至少要包含/article/才行
    proxy_pass http://127.0.0.1:8080;
    # 访问http://localhost/article/1.html  ==> 127.0.0.1:8080/article/1.html
}

location /article/ {
    # 注意不会匹配localhost/article
    proxy_pass http://127.0.0.1:8080/;
    # 访问http://localhost/article/     ==>  127.0.0.1:8080/
    # 访问:http://localhost/article/123  ==>  127.0.0.1:8080/123
}

location /article {
    proxy_pass http://127.0.0.1:8080/;
    # 访问http://localhost/article1.html   ==>  127.0.0.1:8080/1.html
    # 访问http://localhost/article/1.htl  ==>  127.0.0.1:8080//1.html  
}

第 1、2、3 种写法比较常见~

  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖 • 35 关注
  • 代理
    46 引用 • 103 回帖
  • 反向代理
    9 引用 • 38 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...