Nginx (4):nginx动静分离

什么是动静分离不解释了,网上说的很清楚,这里只说配置

  • 目的
    02虚拟机运行一个tomcat,处理动态请求,而对静态文件的访问则交给01虚拟机。
  • 操作
    下面是01虚拟机的配置文件内容:

server {
	listen 82;
	listen [::]:82;

	#root /var/www/web/index;
	#index index.html;
     
	server_name localhost;
	location / {
		proxy_pass http://192.168.xxx.xxx:8080;
		#try_files $uri $uri/ =404;
	}

	location /css {
		root html;
		index index.html index.htm;
	}
	location /js {
		root html;
		index index.html index.htm;
	}
	location /img {
		root html;
		index index.html index.htm;
	}
}

首先修改proxy_pass,改为02虚拟机的tomcat地址端口,然后设置location,很好理解,访问css就去html目录下的css目录中查找,js和img同理。

  • 效果
    下面访问02虚拟机的端口,发现静态文件全是从01虚拟机对应的目录下去取的(前提是提前将对应的静态文件放到01虚拟机的相应目录),此时删除02虚拟机对应目录下的文件依然能够在页面上准确返回相应的内容。
  • 原理

反正静态文件是不变的,经过nginx从tomcat去取,取完了返回给nginx,再给用户呈现,还不如直接把静态放到nginx,别经手tomcat,因为tomcat是处理动态请求的服务器。因此就做到了动静分离。

  • 正则匹配

可以看到上面js、css、img每人一个location,有些冗余,这里可以使用正则的方法

server {
	listen 82;
	listen [::]:82;

	#root /var/www/web/index;
	#index index.html;
     
	server_name localhost;
	location / {
		proxy_pass http://192.168.xxx.xxx:8080;
		#try_files $uri $uri/ =404;
	}

	location ~*/(js|img|css) {
		root html;
		index index.html index.htm;
	}
}

~表示开始正则。

  • 我自己的项目:
    项目路径是这样的:
    在这里插入图片描述
    views里面存放html,以login.html做示范。
    login.html里面的静态文件路径也不复杂,分别来自上面图片里除了views以外的文件夹,也只是js、img、css这几种静态文件,然后在02虚拟机开启tomcat,并将views放到tomcat的web根目录\demo下,01虚拟机去充当nginx服务器,配置文件我是这么写的:
server {
	listen 82;
	listen [::]:82;

	#root /var/www/web/index;
	#index index.html;
     
	server_name localhost;
	location / {
		proxy_pass http://192.168.xxx.xxx:8080/demo/views/login.html;
		#try_files $uri $uri/ =404;
	}

	location ~*/(js|img|css) {
		root /var/www/web ;
		index index.html index.htm;
	}
}

我发现,来自js、css、img这几个文件夹的静态文件确实可以获取到,但是来自layui、assembly等文件夹的静态文件获取不到。。
在这里插入图片描述
于是我修改配置文件:

server {
	listen 82;
	listen [::]:82;

	#root /var/www/web/index;
	#index index.html;
     
	server_name localhost;
	location / {
		proxy_pass http://192.168.xxx.xxx:8080/demo/views/login.html;
		#try_files $uri $uri/ =404;
	}

	location ~*/(js|img|css|layui|assembly) {
		root /var/www/web ;
		index index.html index.htm;
	}
}

其实就是匹配规则里添加了这几个文件夹的名字js|img|css|layui|assembly。我之前以为这里的匹配规则匹配的是文件类型,现在才知道,匹配的是路径。。
于是就好了:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CtrlZ1

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

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

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

打赏作者

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

抵扣说明:

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

余额充值