Nginx不同拦截路径代理相同静态资源(alisa和root)

Nginx不同拦截名代理相同静态资源(alisa和root)

下面的内容同样适用与Linux系统。

1、配置静态资源代理

以前配置Nginx都是使用/来进行静态资源代理。这样就直接加载资源目录下面的文件了,类似下面这样:
在这里插入图片描述
在D盘下新建一个html的文件夹,文件夹下有一个index.html文件,现在就需要代理访问到index.html文件,配置如下:

server {
    #代理监听的接口
    listen       8000;
    server_name  localhost;
	#代理拦截的静态资源路径 : /
    location / {
        root   D:\html;
        index  index.html index.htm;
    }
 }

上面的配置就是只要是访问到了localhost:8000端口就会将请求代理到index.html。访问结果如下:
在这里插入图片描述

现在的需求是配置不同的站点访问到相同的静态资源文件。 配置信息如下:

server {
    listen       8000;
    server_name  localhost;

    location / {
        root   D:\html;
        index  index.html index.htm;
    }
	#站点1
	location /test1 {
		root D:\html;
		index index.html;
	}
	#站点2
	location /test2 {
		root D:\html;
		index index.html;
	}
}	

上面新加的两项配置是通过访问localhost:8000/test1localhost:8000/test2都能访问到D:\html文件夹中的index.html文件,But…
在这里插入图片描述
在这里插入图片描述
事实就是并不能通过拦截test1和test2f访问到D:\html\index.html文件。

原因就是使用root配置资源路径,nginx进行资源代理的时候会将代理拦截添加到资源路径的后面,如: D:\html\test1\index.html 这样肯定就访问不到资源了啊,因为根本就不存在test1这个文件夹以及文件夹中index.html文件(请自动忽略图1中的两个test1和test2文件夹)。

假设自己新建指定的目录test1和test2,如图1,并且将index.html复制到这两个文件夹中并且将内容略作需改,再次访问localhost:8000/test1localhost:8000/test2请求,结果:
在这里插入图片描述
在这里插入图片描述
神奇的是访问到了!不过这样做也不太友好,不可能在每一个拦截里面部署相同的资源。

下面就是解决怎么使用不同的拦截名,代理到相同的静态资源。 经过我一番查找资料,找到了解决方案:

server {
    listen       8000;
    server_name  localhost;

    location / {
        root   D:\html;
        index  index.html index.htm;
    }
	
	location /test1 {
		root D:\html;
		index index.html;
	}
	
	location /test2 {
		root D:\html;
		index index.html;
	}
	#又新加的两个代理方案test3和test4
    #使用alisa别名指定资源路径
	location /test3 {
		alias D:\html;
		index index.html;
	}
    #要注意下面这两种情况:如果test3后面加上/那么虚拟路径的后面就一定要加。
    #如果test3后面不加/,那么虚拟路径后面加不加都行,或者是都不加默认会加上。
    #location /test3/ {
    #	alias D:\html/;
    #	index index.html;
  	#}   
    
    #location /test3 {
    #	alias D:\html/;
    #	index index.html;
  	#}
	
	location /test4 {
		alias D:\html;
		index index.html;
	}
}

如上的配置信息/test3和test4来代理D:\html下的资源文件,不同的是路径的配置方式由root变成了alisa,访问结果如下:
在这里插入图片描述
在这里插入图片描述
这两个请求都能够正确代理相同的资源文件,说明配置成功了!可以通过站点test3和站点test4来访问相同的资源文件了。

注!以上的配置信息在Linux系统中同样生效,不同的是需要更改root或者alisa中指定的文件路径。

2、root和alisa的区别

  • root

root指的是实际路径(目录上层路径定义),拦截的path需要添加到实际路径的后面,资源会在拼接之后的url中查找。

  • alias

alias指的是虚拟路径(目录别名定义),拦截的path不会添加到虚拟路径的后面,资源会直接在虚拟路径中查找。

3、window系统下nginx命令使用

以下的命令需要在DOS窗口下,进入到nginx.exe所在目录下执行。

  1. 启动

    nginx.exe  #不建议使用这种方式启动,这样启动窗口会暂停,不能执行其他命令
    start nginx.exe
    
  2. 停止

    #两种任选其一
    nginx.exe -s quit
    nginx.exe -s stop
    
  3. 重加载配置文件

    nginx.exe -s reload
    
  4. 查看nginx版本信息

    nginx.exe -v
    

4、参考文章

https://www.nginx.cn/4658.html

https://www.cnblogs.com/zhangqunshi/p/6866522.html

https://www.cnblogs.com/wushank/p/11730534.html

https://www.cnblogs.com/jianmingyuan/p/10899917.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白说(๑• . •๑)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值