使用 PM2 + Nginx 部署 Nuxt 应用

一、服务器环境准备

1. 安装 Node.js 和 NPM

bash

# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# CentOS/RHEL
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
sudo yum install -y nodejs

# 验证安装
node -v
npm -v

2. 安装 PM2

bash

sudo npm install -g pm2

3. 安装 Nginx

bash

# Ubuntu/Debian
sudo apt update
sudo apt install -y nginx

# CentOS/RHEL
sudo yum install -y nginx

# 启动 Nginx
sudo systemctl start nginx
sudo systemctl enable nginx

二、部署 Nuxt 应用

1. 上传文件到服务器

确保 /www/root/test 目录包含以下结构:

text

/www/root/test/
├── .output/
│   ├── server/
│   │   └── index.mjs
│   └── public/
│       └── _nuxt/
└── package.json

2. 安装生产依赖

bash

cd /www/root/test
npm install --production

三、配置 PM2 启动 Nuxt

1. 创建 PM2 配置文件 ecosystem.config.js

javascript

module.exports = {
  apps: [{
    name: 'nuxt-app',
    script: '.output/server/index.mjs',
    instances: 'max', // 使用所有CPU核心
    exec_mode: 'cluster',
    autorestart: true,
    watch: false,
    max_memory_restart: '1G',
    env: {
      NODE_ENV: 'production',
      PORT: 3000,
      HOST: '0.0.0.0'
    }
  }]
}

2. 启动应用

bash

cd /www/root/test

# 使用配置文件启动
pm2 start ecosystem.config.js

# 或直接启动
pm2 start .output/server/index.mjs --name nuxt-app --watch --time

# 设置开机自启
pm2 startup
# 按照提示执行生成的命令
pm2 save

3. 管理 PM2 进程

bash

# 查看所有应用
pm2 list

# 查看日志
pm2 logs nuxt-app
pm2 logs nuxt-app --lines 100

# 监控
pm2 monit

# 重启应用
pm2 restart nuxt-app

# 停止应用
pm2 stop nuxt-app

# 删除应用
pm2 delete nuxt-app

# 保存当前进程列表
pm2 save

四、配置 Nginx 反向代理

1. 创建 Nginx 配置文件

bash

sudo nano /etc/nginx/sites-available/nuxt-app

2. 配置内容如下:

nginx

server {
    listen 80;
    server_name your-domain.com www.your-domain.com; # 修改为你的域名
    root /www/root/test;
    
    # 设置日志
    access_log /var/log/nginx/nuxt-app-access.log;
    error_log /var/log/nginx/nuxt-app-error.log;
    
    # 反向代理到 Nuxt
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
        
        # 超时设置
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }
    
    # 直接提供静态文件(提高性能)
    location /_nuxt/ {
        alias /www/root/test/.output/public/_nuxt/;
        expires 365d;
        add_header Cache-Control "public, immutable";
        access_log off;
    }
    
    # 阻止访问敏感文件
    location ~ /\. {
        deny all;
    }
    
    # 压缩配置
    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
}

3. 启用站点配置

bash

# 创建软链接
sudo ln -s /etc/nginx/sites-available/nuxt-app /etc/nginx/sites-enabled/

# 测试配置
sudo nginx -t

# 重新加载 Nginx
sudo systemctl reload nginx

五、防火墙配置

bash

# 开放 80 端口(HTTP)
sudo ufw allow 80/tcp

# 如果使用 SSL,开放 443 端口
sudo ufw allow 443/tcp

# 启用防火墙
sudo ufw enable

六、SSL 证书配置(可选,推荐)

1. 安装 Certbot

bash

# Ubuntu/Debian
sudo apt install -y certbot python3-certbot-nginx

# CentOS/RHEL
sudo yum install -y certbot python3-certbot-nginx

2. 获取 SSL 证书

bash

sudo certbot --nginx -d your-domain.com -d www.your-domain.com

3. 自动续期测试

bash

sudo certbot renew --dry-run

七、部署脚本

创建 deploy.sh 脚本:

bash

#!/bin/bash

set -e  # 遇到错误立即退出

echo "=== 开始部署 Nuxt 应用 ==="

# 进入项目目录
cd /www/root/test

echo "1. 停止当前应用..."
pm2 stop nuxt-app || true

echo "2. 安装依赖..."
npm ci --production

echo "3. 重启应用..."
pm2 restart nuxt-app || pm2 start .output/server/index.mjs --name nuxt-app --time

echo "4. 等待应用启动..."
sleep 5

echo "5. 检查应用状态..."
pm2 list

echo "6. 查看应用日志..."
pm2 logs nuxt-app --lines 10

echo "=== 部署完成 ==="

# 测试访问
echo "测试访问..."
curl -f http://localhost:3000 || echo "应用启动失败,请检查日志"

给脚本执行权限:

bash

chmod +x deploy.sh
./deploy.sh

八、常用维护命令

bash

# 查看 PM2 状态
pm2 status

# 查看实时日志
pm2 logs nuxt-app --lines 100

# 查看 CPU/内存使用
pm2 monit

# 重启所有应用
pm2 restart all

# 重新加载 Nginx
sudo systemctl reload nginx

# 查看 Nginx 错误日志
sudo tail -f /var/log/nginx/nuxt-app-error.log

九、故障排除

1. 如果应用无法启动

bash

# 查看详细错误
cd /www/root/test
node .output/server/index.mjs

# 检查端口占用
netstat -tlnp | grep :3000

# 使用不同端口
PORT=3001 pm2 start ecosystem.config.js

2. 如果 Nginx 返回 502 错误

bash

# 检查 PM2 是否运行
pm2 list

# 检查应用是否监听端口
curl http://localhost:3000

# 查看 PM2 日志
pm2 logs nuxt-app

3. 更新 Nginx 配置后

bash

# 测试配置
sudo nginx -t

# 重新加载
sudo systemctl reload nginx

# 重启
sudo systemctl restart nginx

这样就完成了使用 PM2 + Nginx 的完整部署流程。应用将通过 Nginx 在 80 端口提供服务,PM2 负责管理 Node.js 进程。

Pngquant:Linux上压缩PNG图像的命令行实用工具

Pngquant是一款免费开源的跨平台命令行有损PNG压缩工具。它基于可移植的libimagequant库,用C99编写。可通过将PNG图像转换成更高效的8位PNG格式来显著减小文件大小,并保留完整的alpha透明度。你可能已知道,8位PNG文件常常比24/32位PNG文件小60%至80%。用Pngquant压缩的图像与所有Web浏览器和操作系统完全兼容。 Pngquant可以一次性压缩一个或多个图像。

功能

Pngquant有下列功能:

  • 支持多个PNG文件的批量转换。
  • 高品质的调色板生成。
  • 使用Median Cut量化算法来优化图像。
  • 可以与shell脚本、GUI和服务器端软件轻松地集成。
  • 转换成所需质量的图像,跳过无法转换成所需质量的图像。
  • 多核支持和英特尔SSE优化。

安装

Pngquant可通过多种方式来安装。

从发行版的代码库安装Pngquant

Pngquant存在于大多数Linux发行版的默认代码库中。

在Arch Linux及变体上,Pngquant存在于[Community]代码库中。启用Community代码库,使用Pacman安装它,如下所示:

在CentOS上:复制

$ sudo yum install epel-release 
 
$ sudo yum install pngquant 

压缩PNG图像

现在不妨使用命令压缩上述图像:

复制
$ pngquant ostechnix.png 
1.
上述命令将压缩ostechnix.png文件并将其保存为名为“ostechnix-fs8.png”的新文件。默认情况下,Pngquant将使用与输入文件名相同的输出文件名,最后使用后缀-or8.png或-fs8.png。这意味着它不会覆盖源文件。如果你对压缩率不满意,只需删除压缩文件并保留原始压缩文件。

不妨再次检查压缩图像文件的大小:

复制
$ du -sh ostechnix-fs8.png 
 
48K ostechnix-fs8.png 

docker部署grafana密码忘记后的重置密码步骤

1.查找数据库名–find / -name “grafana.db”

/data/docker/docker/overlay2/3a9ec5648aeb124a13270bacb66bb34e16c7f7112982e470a8cfa834c96778da/merged/var/lib/grafana/grafana.db /data/docker/docker/overlay2/3a9ec5648aeb124a13270bacb66bb34e16c7f7112982e470a8cfa834c96778da/diff/var/lib/grafana/grafana.db


2.进入数据库–sqlite3 /data/docker/docker/overlay2/3a9ec5648aeb124a13270bacb66bb34e16c7f7112982e470a8cfa834c96778da/merged/var/lib/grafana/grafana.db

3.执行查询用户–select * from user;

4.更新密码–update user set password = ’59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6′,
…> salt = ‘F3FAxVm33R’
…> where login = ‘admin’;
5.退出 .exit

6.重启服务 –docker restart grafana

vim 关闭自动缩进

如果在.vimrc中设置了自动缩进set autoindent(简写 set ai),那么在插入模式下粘贴代码时,vim会自动为代码缩进,导致格式混乱。

关闭办法:

vi /etc/vimrc

把set ai 改 set paste

再编辑就不会自动缩进了

Linux shell下grep显示前后几行内容

标准unix/linux下的grep通过下面參数控制上下文

grep -C 5 foo filename # 显示filename文件里匹配foo字串那行以及上下5行
grep -B 5 foo filename # 显示foo及前5行
grep -A 5 foo filename # 显示foo及后5行

linux CentOS安装php7.4 ZipArchive扩展和libzip扩展

这里我们已centos7为例子,Ubuntu系统的同学,可以对比下对应的命令

首先执行php -m 查看自己已安装的扩展包,避免重复安装

安装这两个扩展包的先决条件:

1.安装zip,需要先安装libzip扩展
2.安装libzip,需要先安装cmake

SO,我们先安装cmake

1.由于安装cmake十分缓慢,建议科学上网,不具备条件的同学,这里,我已经下载好了,需要的同学自取 
有条件的同学可以直接服务器下载 
wget https://cmake.org/files/v3.3/cmake-3.3.2.tar.gz 
对应的版本可以自己去查看
2.tar xzvf cmake-3.3.2.tar.gz 解压源码包
3.安装gcc等程序包(安装过则忽略) yum install gcc-c++
4.安装cmake,先进入解压后的cmake目录,cd cmake-3.3.2, ./bootstrap
5.编译安装make && make install
6.查看版本:cmake --version,出现版本信息表示安装成功
#####第二步,安装libzip,由于cmake的限制,libzip版本必须>=0.11,具体可看官方:https://nih.at/libzip/index.html

1.#下载
wget https://nih.at/libzip/libzip-1.2.0.tar.gz 
#需要高版本的同学可以去https://nih.at/libzip自己寻找
2.#解压
tar -zxvf libzip-1.2.0.tar.gz
#进入目录
cd libzip-1.2.0
3.#配置编译安装
./configure,make && make install
第三步,安装zip

1.#下载
wget http://pecl.php.net/get/zip-1.16.0.tgz,#需要高版本的到官网查询[http://pecl.php.net/package/zip](http://pecl.php.net/package/zip)
2.#解压并进入目录
tar zxvf zip-1.16.0.tgz,cd zip-1.16.0
3.#编译安装/
usr/local/php/bin/phpize,
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
4.#修改php.ini,加上扩展
[zip] extension=zip.so,zlib.output_compression = On,
5.重启PHP,查看phpinfo,zip扩展已经安装成功

system libzip must be upgraded to version >= 0.11

首先,卸载系统自带的libzip

yum  -y remove libzip-devel

然后从官网下载并编译安装

wget https://libzip.org/download/libzip-1.3.2.tar.gz
tar xvf libzip-1.3.2.tar.gz
cd libzip-1.3.2
./configure
make && make install

如果是下载1.5.*以上版本,则需要采用如下安装方式

yum -y install cmake
wget https://libzip.org/download/libzip-1.5.1.tar.gz
tar -zxvf libzip-1.5.1.tar.gz
cd libzip-1.5.1
mkdir build
cd build
cmake ..
make && make install
然后再安装zip

CentOS 7 修复官方源/更换阿里云yum镜像源

发现即使在国外节点的服务器,阿里云的centos镜像源速度仍然是不讲道理的下载速度,对比原来的centos官方的源的速度,快N倍。
果断换掉破自行车,换飞机。
删除centos官方源前,请确保已经安装了wget命令,如果已经删源了还没安装wget,可以先恢复官方源,安装wget再删除官方源。

  • 恢复官方源:rpm -Uvh –force http://mirror.centos.org/centos-7/7/os/x86_64/Packages/centos-release-7-9.2009.0.el7.centos.x86_64.rpm 备注:由于rpm包跟着最新版更新,具体以官网现有的rpm包名字的链接为准,我现在的时间最新版为7.7.1908,如果安装官方报错,可以自行到源站查看最新版包名,把url中的centos-release-7-7.1908.0.el7.centos.x86_64.rpm相应版本号改成你在官网看到的版本号即可
  • 安装wget
    yum install -y wget
    安装wget之后,就可以把centos官方源换成阿里的。
  1. 清除yum缓存yum clean all
  2. 删除官方源cd /etc/yum.repos.d && rm -rf ./*
  3. 添加阿里云的镜像源和EPEL源
  4. 重新生成缓存yum makecache & yum makecache fast
  5. 更新软件包,系统yum update -y
  6. 享受阿里云遍布全球的CDN加速节点

域名停用后未注销ICP备案引发的法律风险之化解 |李章虎律师团队

风险背景

随着网络安全形势日益严峻,国家监管政策亦日趋严格。如今各企业单位申请域名开办网站之前,须依照《互联网信息服务管理办法》的规定,以企业或个人真实信息向当地通信管理局进行ICP域名备案。不少企业使用一段时间后停办网站且不再向域名经销商缴纳域名使用费,以为该域名从此即与己无关。但他们却忽视了重要法律风险——若未向通信管理局申请注销附在域名ICP备案信息,导致域名所有权变更为他人,但备案信息还是自己的对外状态,而在后续的域名流转过程中,该域名极有可能被他人购得而非法利用,从而为企业招致较大的法律风险。

在北京知识产权法院审结的(2021)京73民终1171号北京某公司诉北京某知识产权代理有限公司侵害作品信息网络传播权纠纷民事一案中,被告北京某知识产权代理有限公司正是由于域名到期停用后未及时注销ICP备案登记,导致后续域名流转至案外人王某时备案主体仍显示为被告北京某知识产权代理有限公司。在此种情形下,涉案域名网站被“改造”成某电影网,免费提供各类电影在线播放及下载服务。权利人以该网站的ICP备案主体为被告诉至法院,法院最终认定被告北京某知识产权代理有限公司侵权成立,令其赔偿原告北京某公司20000余元。除此案外,该案被告北京某知识产权代理有限公司同时遭遇其他权利人发起的多起类似诉讼,均被法院判赔数万元,并承担了诉讼费及相关支出,付出了巨大的时间和精力,累计损失不可谓不大。

那么,应当如何化解企业在域名停用后未注销ICP备案引发的法律风险呢?

近日,上海锦天城(重庆)律师事务所合伙人李章虎律师团队办理的一起北京某公司诉重庆某公司侵犯作品信息网络传播权纠纷案在重庆两江新区人民法院开庭审理,本案中李章虎律师团队代理被告重庆某公司参与案件诉讼,该案的应诉策略及诉讼思路对于企业预防此类法律风险,以及律师同仁代理此类案件时的诉讼策略选择具有十分典型的参考意义。

案情简介

原告北京某公司称其从著作权人处以独占许可的方式获得了涉案数部作品的信息网络传播权及维权权利,在授权有效期间内发现某网站正在提供涉案作品的在线播放服务,而该网站的ICP备案主体正是被告。因此,原告认为被告侵犯了其作品的信息网络传播权,故提起本次诉讼,要求被告停止侵权,赔偿经济损失及合理维权费用共计十六万元。

承办过程

本案被告重庆某公司委托上海锦天城(重庆)律师事务所合伙人李章虎律师、王艳实习律师、高宇律师助理组成律师团队参与案件诉讼。律师团队接受本次代理后,第一时间制定了诉讼策略,并协助当事人应对本次诉讼。

一般而言,作品信息网络传播权纠纷案件中被告拥有多个抗辩点,包括原被告主体不适格抗辩、无作品权利基础抗辩、不侵权抗辩以及合法来源抗辩等。在本案中,被告先前使用的涉案域名因到期后未再续费,实际上已失去对域名的管理权,但由于涉案域名ICP备案信息未申请注销,工信部查询系统显示的域名管理人仍为被告。经调查了解,确认被告确实无实施侵犯原告作品信息网络传播权的行为后,律师团队从尊重案件事实、维护当事人合法权益的角度出发,确定以“被告非案件适格主体”进行抗辩,并及时协助当事人采取以下措施:

1、 立即向当地通信管理局申请注销ICP备案;

2、 立即在当地的公安局报案,获取书面报案回执,进行自救性备案;

3、 通过Whois系统查询涉案域名的管理商,并向涉案域名管理商发函询问,核实域名情况,并敦促其尽快关停涉案网站并披露侵权期间域名的实际使用人信息;

4、 请求人民法院从涉案域名管理商处调取相关证据以明确实际侵权人。

通过采取上述取证、固证措施,律师团队在明确涉案域名销售管理商信息后积极与其联系,并努力说服且提请法院向域名销售管理商调取涉案域名的流转、使用记录,从而获得足以确定本案实际侵权人的直接证据,排除了被告重庆某公司作为ICP备案主体的侵权可能。原告自觉其诉讼请求已丧失事实依据,遂撤诉结案。

李章虎律师团队基于该案件的处理结果认为:企业在处理类似问题引发的诉讼案件中,应当于案件初始阶段就从各种途径对案件证据进行补强,若决定从“非案件适格被告”的角度进行抗辩,则必须从多个方面调查证据、固定证据,以证明自己非实际侵权主体,且最好能够举证证明确实存在其他实际侵权人。

本案中,李章虎律师团队在查阅既往的司法判例后,深知许多被控侵权的被告正是由于未能举示充分证据证明实际侵权人的存在,而被法院判决承担赔偿责任。为应对这一诉讼风险,律师团队尽最大的努力搜集相关证据,最终证明了涉案域名到期后已发生两次转移,且侵权行为发生时涉案域名已由案外人控制的关键事实,同时结合被告掌握的其他证据,形成了一个完整的证据链条,得以证明本案被告并未实施任何侵权行为,并使得法官产生内心确信,取得了极好的诉讼效果。

庭审其他重点

虽然此类案件中确定的主要抗辩点为被告主体不适格,但除此之外,在庭审中亦不能忽视对原告权属、侵权事实等方面证据的核实。因此,被告仍应当注意以下重点:

1、 审查原告主张权利作品的原始载体、权属证据是否完备;

2、 审查原告主张权利作品权利授权链条是否完整,尤其注意作品授权书的内容是否存在矛盾之处;

3、在权利作品与侵权作品之间进行认真比对,审查二者是否构成相同或实质性相似;

4、审查核对原告提供的证据原件与复印件是否一致等;

案件启示

随着互联网经济的不断发展,此类案件近年来频频发生,许多企事业单位因此遭遇“无妄之灾”,大多败诉结案。为避免陷入诉累,企业应当注意以下几点:

1、 域名不使用后,若未注销ICP备案的,必须及时向备案机关申请注销ICP备案,从源头上消除诉讼风险;

2、若未注销备案而遭遇侵权诉讼后,应当及时采取相关措施维护自身权利,包括但不限于:(1)积极向当地公安局报案,说明事实情况,获取书面报案回执;(2)通过Whois系统查询涉案域名的管理商,并向涉案域名管理商发函询问,核实域名情况,并敦促其尽快关停涉案网站并披露侵权期间域名的实际使用人信息;(3)请求法院向涉案域名管理商处调取相关证据以明确实际侵权人。

CSS、JS、字体、图片静态文件nginx配置压缩指南

静态文件简介

Web 开发中需要的静态文件有:CSS、JS、字体、图片,可以通过web框架进行访问,但是效率不是最优的。
Nginx 对于处理静态文件的效率要远高于 Web 框架,因为可以使用 gzip 压缩协议,减小静态文件的体积加快静态文件的加载速度、开启缓存和超时时间减少请求静态文件次数。

下面就介绍如何通过 Nginx 管理静态文件的访问,优化网站的访问速度。

一、开启 gzip

配置介绍和参数如下,建议使用时删掉注释。

gzip on;
#该指令用于开启或关闭gzip模块(on/off)

gzip_buffers 16 8k;
#设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。16 8k代表以8k为单位,安装原始数据大小以8k为单位的16倍申请内存

gzip_comp_level 6;
#gzip压缩比,数值范围是1-9,1压缩比最小但处理速度最快,9压缩比最大但处理速度最慢

gzip_http_version 1.1;
#识别http的协议版本

gzip_min_length 256;
#设置允许压缩的页面最小字节数,页面字节数从header头得content-length中进行获取。默认值是0,不管页面多大都压缩。这里我设置了为256

gzip_proxied any;
#这里设置无论header头是怎么样,都是无条件启用压缩

gzip_vary on;
#在http header中添加Vary: Accept-Encoding ,给代理服务器用的

gzip_types
    text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
    text/javascript application/javascript application/x-javascript
    text/x-json application/json application/x-web-app-manifest+json
    text/css text/plain text/x-component
    font/opentype font/ttf application/x-font-ttf application/vnd.ms-fontobject
    image/x-icon;
#进行压缩的文件类型,这里特别添加了对字体的文件类型

gzip_disable "MSIE [1-6]\.(?!.*SV1)";
#禁用IE 6 gzip

二、扩展压缩类型

修改 /etc/nginx/mime.types 文件,增加需要压缩的文件对应 type 到上述 gzip 配置中。下面几乎涵盖了所有静态文件对应的类型:

types {
    application/atom+xml                atom;
    application/dart                    dart;
    application/gzip                    gz;
    application/java-archive            jar war ear;
    application/javascript              js jsonp;
    application/json                    json;
    application/owl+xml                 owl owx;
    application/pdf                     pdf;
    application/postscript              ai eps ps;
    application/rdf+xml                 rdf;
    application/rss+xml                 rss;
    application/vnd.ms-fontobject       eot;
    application/x-7z-compressed         7z;
    application/x-bittorrent            torrent;
    application/x-chrome-extension      crx;
    application/x-font-otf              otf;
    application/x-font-ttf              ttc ttf;
    application/x-font-woff             woff;
    application/x-opera-extension       oex;
    application/x-rar-compressed        rar;
    application/x-shockwave-flash       swf;
    application/x-web-app-manifest+json webapp;
    application/x-x509-ca-cert          crt der pem;
    application/x-xpinstall             xpi;
    application/xhtml+xml               xhtml;
    application/xml                     xml;
    application/xml-dtd                 dtd;
    application/zip                     zip;

    audio/midi                          kar mid midi;
    audio/mp4                           aac f4a f4b m4a;
    audio/mpeg                          mp3;
    audio/ogg                           oga ogg;
    audio/vnd.wave                      wav;
    audio/x-flac                        flac;
    audio/x-realaudio                   ra;

    image/bmp                           bmp;
    image/gif                           gif;
    image/jpeg                          jpe jpeg jpg;
    image/png                           png;
    image/svg+xml                       svg svgz;
    image/tiff                          tif tiff;
    image/webp                          webp;
    image/x-icon                        cur ico;

    text/cache-manifest                 appcache manifest;
    text/css                            css less;
    text/csv                            csv;
    text/html                           htm html shtml;
    text/mathml                         mml;
    text/plain                          txt;
    text/rtf                            rtf;
    text/vcard                          vcf;
    text/vtt                            vtt;
    text/x-component                    htc;
    text/x-markdown                     md;

    video/3gpp                          3gp 3gpp;
    video/avi                           avi;
    video/mp4                           f4p f4v m4v mp4;
    video/mpeg                          mpeg mpg;
    video/ogg                           ogv;
    video/quicktime                     mov;
    video/webm                          webm;
    video/x-flv                         flv;
    video/x-matroska                    mkv;
    video/x-ms-wmv                      wmv;
}

三、开启超时时间

通过设置Expires,开启缓存。

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
    expires 30d;
    access_log off;
}

location ~ .*\.(eot|ttf|otf|woff|svg)$ {
    expires 30d;
    access_log off;
}

location ~ .*\.(js|css)?$ {
    expires 7d;
    access_log off;
}