首页 > 其他 > 详细

Nginx动静分离

时间:2018-08-16 00:27:10      阅读:269      评论:0      收藏:0      [点我收藏+]

访问我的博客

前言

最新公司新开了一个项目,项目由我来配置基础环境,会写一系列的教程来展示,一个网站从零到上线的整个过程。首先本文介绍资源文件的隔离。

为什么要实现动静分离

为什么要将静态资源文件与动态请求进行分离? 为了降低 Tomcat 服务器的负载,可以通过本文设置并结合 CDN 来实现来更彻底地降低服务器的负载。

技术分享图片

如图所示,所有的请求都压到了同一台服务器上, 无论静态还是动态的请求,这样流量大的话势必会造成服务器的负载过高,因为动静分离是必不可少的。

环境介绍

首先这是我们项目的目录结构, resource 目录和 **_res** 目录中都是静态资源文件,存放比如 js/css/img 等资源。这两个目录下的文件有所不同,**_res** 目录下面是压缩版本的,比如压缩的js/css。通过 Git 或者 SVN 将项目上传到服务器上后,配置 Nginx 来完成静态资源的分离。

技术分享图片

首先看一张图(图的来源是:http://www.cnblogs.com/xiaoblog/p/4241086.html)

技术分享图片

当请求经过 Nginx 时,如果是静态资源的请求,就直接返回主机上静态资源即可, 如果是动态请求,则去请求 Tomcat 服务器后再返回。如果流量不是很大,静态资源可以和 Tomcat 服务器放在同一台主机上,否则需要将静态资源与 Tomcat 服务器分开。

我司对于资源文件的做法是新建一个二级域名,该域名只用于加载静态资源文件。如 res.domain.com,这样做的好处是简化了在 Nginx 的 配置。

配置 Nginx

首先需要安装 Nginx, 可以参考我的另外一篇文章 Nginx实现Tomcat集群。这里只需要参考到安装 Nginx 即可。

Nginx 静态资源配置

打开 Nginx 配置文件

vim /usr/local/nginx/conf/nginx.conf

添加 server

server {
    # 只接收静态资源请求
    listen       80;
    server_name   res.domain.com;
    charset utf8;

    default_type            text/plain;
    add_header Access-Control-Allow-Origin *;
    #access_log logs/heiyan.image.access.log  click;

    location ~* \.(zip|rar|gz|tar.gz|gz|exe)$ {
        return 500;
    }

    location / {
        #资源文件的目录
        root /home/resources;
        index index.html;

        expires 30d;
        default_type      text/plain;
    }
}
server {
    # 接收动态请求
    listen       80;
    server_name  www.domain.com;
    charset utf8;

    access_log logs/access.log  main;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

拷贝项目中资源文件到指定的资源目录

在 Nginx 的配置文件中指定了资源文件的目录为 /home/resources ,所以需要将资源拷贝到该目录下,进入上文下载的项目的目录中,将资源目录(我这里是**_res目录)拷贝到 /home/resources**目录下面。

cp -r _res /home/resources

拷贝完成后的目录应该是: /home/resources/_res

在 **/home/resources/_res** 目录下放一张图片 a.jpg ,用于测试。

测试静态资源获取

启动 Nginx

打开浏览器访问: http://res.domain.com/_res/a.jpg

如果是动态请求,则使用 http://www.domain.com 域名

返回结果:

技术分享图片

因为静态资源文件包含 css/js 等文件,修改提交后需要拷贝增量与修改的文件到 /home/resources 目录下,如果嫌麻烦,可以直接在 Nginx 配置文件中,配置 路径为项目的资源文件夹根路径,比如 **/home/wide-api/src/main/java/resources/_res**, 这种在更新代码之后,可以直接请求到新的资源文件。之后会写一篇通过阿里云CDN来完成静态分离。

注: 由于我的是在虚拟机上的 Nginx 进行测试,也没有域名,且是minimal版本系统,没有桌面环境,所以需要配置宿主机的hosts, 在宿主机的浏览器中访问。在真实服务器且有自己绑定到服务器上域名的就直接测试即可。

使用 SwitchHosts 软件 配置 hosts,我的虚拟机 ip 为192.168.200.129

192.168.200.129 www.domain.com res.domain.com

Nginx动静分离

原文:https://www.cnblogs.com/vcmq/p/9484376.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!