Nginx 实现 CDN 效果

337次阅读
没有评论

http 模块设置

# 设置缓存地址和其他相关设置
proxy_cache_path 缓存地址 levels=1:2 inactive=24d keys_zone=mycache:100m max_size=15g;
# 临时文件存放地址
proxy_temp_path 文件存放地址;
proxy_cache_path 参数 作用
levels 缓存文件的目录层数
inactive 缓存过期时间
keys_zone 缓存名和缓存标识仓库大小
max_size 缓存大小

server 模块设置


server {

    # 被代理端为 http 协议就是 http:// 开头 
    # 被代理端为 https 协议就是 https:// 开头 

    set $proxy_host_ip "http:// 被代理 ip";

    listen 80;                 # 监听端口
    server_name 代理的域名;   # 绑定域名

    # 匹配所有请求,将它们转发到后端服务器
    location / {

        proxy_pass $proxy_host_ip;  # 后端服务器地址与端口
        proxy_set_header Host $host;             # 保留原始 Host 头
        proxy_set_header X-Real-IP $remote_addr; # 传递真实客户端 IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;  # 传递请求协议(http/https)proxy_connect_timeout 600; # 链接超时时间
        proxy_read_timeout 600; # 链接读超时时间

        # 其他可选配置 如缓存 超时 重试等

    }

    # 正则表达式匹配 指定文件后缀名
    location ~* \.(zip|iso|deb|exe|tar.gz|rar|tar.xz|msi|run|test)$ {

        proxy_pass $proxy_host_ip;  # 后端服务器地址与端口
        proxy_set_header Host $host;             # 保留原始 Host 头
        proxy_set_header X-Real-IP $remote_addr; # 传递真实客户端 IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;  # 传递请求协议(http/https)proxy_connect_timeout 600; # 链接超时时间
        proxy_read_timeout 600; # 链接读超时时间

        # 使用 http 里面定义的缓存
        proxy_cache mycache;

        # 缓存链接标识
        proxy_cache_key $host$request_uri;

        # 忽略后端服务器缓存策略
        proxy_ignore_headers Cache-Control;

        # 添加自定义 headres
        add_header Proxy-Cache-Status $upstream_cache_status;

        #  缓存指定状态码的请求结果
        proxy_cache_valid 200 302 24d;

    }

}

设置 SSL

在 server 中添加

ssl_protocols       TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate pem 文件地址; # 证书文件路径
ssl_certificate_key key 文件地址; # 私钥文件路径
ssl_session_cache   shared:SSL:10m;
ssl_session_timeout 10m;

修改 server 中 listen 为

listen 443 ssl; 

添加新的 server

server {
    listen 80;
    server_name 代理的域名;
    # 重定向 HTTP 到 HTTPS
    return 301 https://$server_name$request_uri;

}
正文完
 0
评论(没有评论)