文章目录
什么是动静分离
动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。
动静分离简单的概括就是:动态文件与静态文件的分离
为什么要做动静分离?
在我们的软件开发中,有些请求是需要后台处理的(如.jsp,.do等等),有些请求时不需要经过后台处理的(如css、html、jpg、js等文件),这些不需要经过后台处理的文件成为静态文件,否则为动态文件。因此我们后台处理应忽略静态文件。但这样后台的请求次数就明显增多了,在我们对资源的响应速度有要求的时候,就应使用动静分离的策略去解决。
动静分离将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。这里我们将静态资源放到nginx中,动态资源转发到tomcat服务器中。
动静分离的原理很简单,通过location对请求url进行匹配即可,具体配置如下:
nginx实现动静分离
主机名 | IP | 服务 |
---|---|---|
nginx | 192.168.100.150 | nginx |
client1 | 192.168.100.110 | httpd |
client2 | 192.168.100.120 | lnmp |
服务安装
httpd安装
这里为了便于实现效果,httpd采用yum的方式安装
[root@client1 ~]# yum -y install httpd
[root@client1 ~]# systemctl enable --now firewalld
[root@client1 ~]# setenforce 0
lnmp搭建
创建源码包存放目录并下载源码包
[root@client2 ~]# mkdir /usr/src/soft
[root@client2 ~]# cd /usr/src/soft/
[root@client2 soft]# wget https://nginx.org/download/nginx-1.20.1.tar.gz
[root@client2 soft]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
[root@client2 soft]# wget https://www.php.net/distributions/php-8.0.12.tar.gz
[root@client2 soft]# ls
mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz nginx-1.20.1.tar.gz php-8.0.12.tar.gz
nginx
创建nginx用户
[root@client2 ~]# useradd -r -M -s /sbin/nologin nginx
安装依赖包
[root@client2 ~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make
[root@client2 ~]# yum -y groups mark install 'Development Tools'
创建日志存放目录
[root@client2 ~]# mkdir -p /var/log/nginx
[root@client2 ~]# chown -R nginx.nginx /var/log/nginx
解压软件包
[root@client2 soft]# tar xf nginx-1.20.1.tar.gz -C /usr/local/
编译安装
[root@client2 nginx-1.20.1]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-debug \
> --with-http_ssl_module \
> --with-http_realip_module \
> --with-http_image_filter_module \
> --with-http_gunzip_module \
> --with-http_gzip_static_module \
> --with-http_stub_status_module \
> --http-log-path=/var/log/nginx/access.log \
> --error-log-path=/var/log/nginx/error.log
[root@client2 nginx-1.20.1]# make && make install
配置环境变量
[root@client2 ~]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
[root@client2 ~]# . /etc/profile.d/nginx.sh
启动nginx
[root@client2 ~]# nginx
[root@client2 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*