Windows 下编译 Nginx支持ngx_cache_purge
官方文档地址: https://nginx.org/en/docs/howto_build_on_win32.html
ngx_cache_purge源码: https://github.com/FRiCKLE/ngx_cache_purge
一. 安装环境支持
- Microsoft Visual C compiler. Microsoft Visual Studio® 8 and 10 are known to work. (建议使用2015版本)
- MSYS or MSYS2.
- Perl, if you want to build OpenSSL® and nginx with SSL support. For example ActivePerl or Strawberry Perl.
- Mercurial client. ( hg 命令拉取 nginx 源码,有 Git 可以不用安装)
- PCRE, zlib and OpenSSL libraries sources. (依赖库)
部分软件安装完成时会提示添加到系统环境变量,记得允许. Microsoft Visual Studio需要根据安装目录搜索执行文件自行添加到环境变量中
二. 下载源码配置目录
|
|
三. 开始编译
启动MSYS,进入nginx的目录,执行脚本
|
|
缺少执行文件注意核查环境变量配置
执行脚本会提示目录不存在请自行添加配置目录
如果提示报错注意核查模块目录名称及位置配置是否正确
|
|
Nginx编译完成后。打开objs目录查看是否生成nginx.exe
四. 整理Nginx部署环境
将源码目录下的 conf、contrib、html、logs、temp
和 objs\nginx.exe
提取到一个目录,方便后期部署.
五. nginx.conf文件配置实例
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 60;
#gzip on;
# 关闭显示版本号
server_tokens off;
# upstream file.cn {
# server 192.168.0.10:9999;
# }
# 开始配置 nginx cache
# 临时目录,缓存的响应首先写入临时文件,然后重命名该文件.
## 临时文件和缓存可以放在不同的文件系统上。在这种情况下,文件是跨两个文件系统复制的,而不是重命名操作。
## 建议缓存和保存临时文件的目录都放在同一个文件系统上。
## 临时文件的目录根据use_temp_path参数(1.7.10)设置,如果此参数被省略或设置为 value on,则将使用proxy_temp_path指令为给定位置设置的目录。如果该值设置为off,则临时文件将直接放在缓存目录中
proxy_temp_path d:/nginx/tmp;
# 缓存目录:
## proxy_cache_path 缓存存放路径
## levels 参数定义缓存的(目录)层次级别从 1 到 3,中间用 : 隔开,每个级别接受值(子目录名字符长短) 1 或 2。
## key_zone mycache为缓存名字,可以在 location 或者 server 中通过 proxy_cache 引用; 100m 表示使用多少内存空间存储nginx key
## max_size 最大使用缓存空间
## inactive 缓存时间
proxy_cache_path d:/nginx/cache levels=1:2 keys_zone=file_cache:100m max_size=50g inactive=90d use_temp_path=on;
# Nginx缓存KEY是键值存储,URL是键,文件路径是值。键值存储的速度就是加快在文件系统中查找的速度。所以,存储的key是哈希过的值
proxy_cache_key $host$request_uri;
server {
listen 80;
server_name localhost;
charset utf-8;
# 静态 IP 可注释后,配置 location 中 proxy_pass 即可
# 代理地址为动态 IP 请配置如下选项
# 该地址可以指定为域名或 IP 地址,带有可选端口(1.3.1、1.2.2)版本以上。
# 如果未指定端口,则使用端口 53。以循环方式查询名称服务器
# 默认情况下,nginx 使用 DNS 响应的 TTL 值缓存时间。可选valid参数允许覆盖它
resolver 223.5.5.5 valid=10s ipv6=off;
# 设置名称解析的超时时间
resolver_timeout 5s;
set $backend "http://yourdomain:port/";
location / {
# 表示对客户端请求的 GET 和 HEAD 方法进行缓存
proxy_cache_methods GET HEAD;
# 将缓存是否命中结果返回
add_header X-Cache $upstream_cache_status;
# 将缓存服务器IP 返回
add_header X-Via $server_addr;
# 用于后端的real server区分不同的虚拟主机
proxy_set_header Host $host;
# 记录客户端真实ip地址,而不是代理服务器地址,需要后端web服务器开启日志相应功能接收
proxy_set_header X-Real-IP $remote_addr;
# 指定使用 file_cache 缓存
proxy_cache file_cache;
# 设置缓存的key
proxy_cache_key $host$uri$is_args$args;
# 缓存有效期
proxy_cache_valid 90d;
# 可以针对于不同的响应码进行缓存不同的时间设定;
# proxy_cache_valid 200 302 10m;
# proxy_cache_valid 404 1m;
# proxy_cache_valid any 1m;
# 指明哪种场景可以使用过期缓存,提升用户体验
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
# 本地缓存过期会检查后端服务器该缓存是否存在,避免后端重传占据带宽;
proxy_cache_revalidate on;
# 开启后忽略不允许缓存
proxy_ignore_headers Set-Cookie Cache-Control;
# 请求被响应多少次才会被缓存,默认是1,生产环境可以根据使用情况配置
proxy_cache_min_uses 1;
# 反代地址
proxy_pass $backend;
}
location ~ /purge(/.*) {
# proxy_cache_purge [缓存空间] [$host$1$is_args$args]
proxy_cache_purge file_cache $host$1$is_args$args;
# 允许使用清除缓存的地址,生产环境注意配置限制IP或IP段.
allow all;
# allow 127.0.0.1;
# 拒绝其它地址使用清除缓存
# deny all;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}