首页 > 系统相关 >Nginx:location、proxy_pass中的斜杠/

Nginx:location、proxy_pass中的斜杠/

时间:2024-09-02 15:47:58浏览次数:9  
标签:127.0 8080 0.1 Nginx api location 斜杠 pass

学习自:

nginx location/区别详解_nginx_脚本之家

nginx的location与proxy_pass指令超详细讲解及其有无斜杠( / )结尾的区别_nginx location 斜杠-CSDN博客

nginx的location、root、alias指令用法和区别 – 蓝队云

Nginx系列-5 root和alias和index和try_files_nginx root index-CSDN博客

nginx root和index是什么 nginx location root配置_mob64ca140c75c7的技术博客_51CTO博客

 

1、前提

1)明确Server和URL

Server:提供HTTP服务的程序,通常为IP:Port的形式

URL:请求的资源在HTTP服务器上的路径,

http://127.0.0.1:8080/server/

  Server:127.0.0.1:8080

  URL:/server/

http://127.0.0.1:8080

  Server:127.0.0.1:8080

  URL:缺省,默认为/

2)location

location为对url的识别和匹配,我们在HTTP上输入的URL并非服务器上的路径(实际上我们也不知道别人服务器的文件组织结构是啥样)。

因此必须要有一个将url映射到服务器路径的机制,这就是nginx的主要工作之一。

这项工作是通过在nginx上配置location项实现的

location url{

  ……

}

这样就可以将在1)中所说的url进行匹配,进而1)继续进行转发(转发到具体的微服务工程),通过proxy_pass关键字执行;2)直接在本地路径中找到所需的资源,并把该资源返回,通过root、alias、index关键字执行

因此需要区分转发、直接返回资源两种情况。

2、proxy_pass:二次转发

写法:

location url1{

  proxy_pass server2/url2

}

1)/url2为空

此时只有一个server2,那么转发的地址为server2/url1是唯一一种会把url1拼到最终URL中的方式;

2)url2为空

此时只有一个单斜杠/,那么最终的转发地址为server2/

3)其他情况

当url2不为空时,实际转发地址的拼接规则均为

  1)先从HTTP请求的URL中将server/url1拆出来;

  2)剩余部分原封不动的拼到server2/url2之后

例子:

1)/url2为空

访问:www.test.com/api/upload

location /api{

  proxy_pass http://127.0.0.1:8080

}

此时不管location后为/api还是/api/,都是转发到http://127.0.0.1:8080/api/upload。

这也是唯一一种会把location匹配的url拼到proxy_pass中的方式。

2)url2为空(与1的区别在于1连前边的斜杠都没有)

访问:www.test.com/api/upload

location /api{

  proxy_pass http://127.0.0.1:8080/

}

此时不管location后为/api还是/api/,都是转发到http://127.0.0.1:8080/upload。

3)其他情况:url2不空

访问:www.test.com/api/upload

①location /api{

  proxy_pass http://127.0.0.1:8080/server/

}

转发到http://127.0.0.1:8080/server/upload

②location /api/{

  proxy_pass http://127.0.0.1:8080/server/

}

转发到http://127.0.0.1:8080/serverupload(这是因为把访问的url中将/api/拆去,剩下的部分只剩一个upload)

4)url末尾无斜杠

访问:www.test.com/api/upload

location /api{

  proxy_pass http://127.0.0.1:8080/server

}

转发到http://127.0.0.1:8080/server/api/upload

 

标签:127.0,8080,0.1,Nginx,api,location,斜杠,pass
From: https://www.cnblogs.com/ShineLeBlog/p/18381057

相关文章

  • Nginx 部署前端 Vue 项目实战指南
    一、环境准备1.安装Nginx首先,需要在服务器上安装Nginx。Nginx是一款轻量级、高性能的HTTP和反向代理服务器。安装方式因操作系统而异。Linux系统(以Ubuntu为例):sudoapt-getupdatesudoapt-getinstallnginxWindows系统:从Nginx官方网站下载安装包,按......
  • nginx-部署windows服务(亲测有效)
    WindowsServiceWrapper(简称winsw)下载winswhttps://repo.jenkins-ci.org/artifactory/releases/com/sun/winsw/winsw/进入链接页面选择对应的版本下载后缀名为net4.exe的文件重命名文件将winsw-2.9.0-net4.exe重命名为nginx-service.exe,并放置到nginx根目录中......
  • nginx 版本升级 转载
    Nginx的版本最开始使用的是Nginx-1.18.0,由于服务升级,需要将Nginx的版本升级到Nginx-1.19.7,要求Nginx不能中断提供服务。为了应对上述的需求,提供两种解决方案:方案1:makeupgrade完成升级方案2:服务信号完成升级nginx版本升级环境说明当前是CentOS7服务器。点击进......
  • Nginx多域名,多证书,多服务配置,实用版
    本文主要讲解在Nginx配置多个域名,多证书,多服务,核心是nginx配置文件。1.情景介绍现在有一个项目,有测试环境和正式环境,已经为两个环境各自申请到域名和ssl证书正式环境域名:xxx.com和www.xxx.com证书:xxx.com_bundle.pem和xxx.com.key测试环境域名:test-xxx.com和......
  • linux nginx 配置连接时间
    在Nginx中配置连接时间主要涉及到几个不同的参数,通常是指与客户端连接、请求和响应相关的时间设置。以下是一些关键配置项,适用于Nginx的nginx.conf文件或相应的虚拟主机配置文件。1.keepalive_timeout设置保持连接的时间。这个时间是指在客户端和服务器之间保持连接的超时时......
  • nginx日志分析工具goaccess
    nginx日志分析工具goaccess wgethttp://tar.goaccess.io/goaccess-1.2.tar.gztarxfgoaccess-1.2.tar.gzcdgoaccess-1.2/./configure--enable-utf8--enable-geoip=legacymakemakeinstall报错:  ......
  • nginx的location详解
    nginx的location详解属于nginx核心模块中的功能,nginx核心功能.location用于匹配用户请求中的uri的.root/app/code/www/www.oldboylinux.cn         uri:/        /app/code/www/首页文件.www.oldboylinux.cn/index.html   ......
  • WPF access mysql and pass data from datagrid to mysql
    //sqldropdatabaseifexistsmydb;createdatabasemydb;usemydb;droptableifexistsmt;createtablemt(idintauto_incrementprimarykey,namevarchar(50)notnulldefault'',isbnvarchar(50)notnulldefault'',authorvarchar......
  • nginx代理http2服务
    NGINX不支持HTTP/2到后端,这从官方文档中可以看出,支持后端的最高HTTP版本为v1.1。其实添加此类支持实际上没有什么意义,因为HTTP/2的主要功能是请求多路复用。可当NGINX处理HTTP代理时,前端NGINX会将请求路由到后端的匹配位置(因为NGINX总是检查单个请求并将其路由到某个......
  • nginx出现403错误的解决方法
    nginx出现403错误的解决方法 2024/08/3117:06:52[error]26005#26005:*11"/root//frontend/dist/index.html"isforbidden(13:Permissiondenied),client:220.196.160.53,server:81.70.112.191,request:"GET/HTTP/1.1",host:"81.70.112.1......