1. 首页
  2. 系统运维
  3. Linux

Nginx反向代理和缓存加速配置

Nginx大家肯定不陌生,他是一个高性能的HTTP和反向代理web服务器。那么如何科学合理的配置nginx反代?

Nginx反向代理和缓存加速配置

安装nginx

yum install epel-release
yum install nginx

当然你也可以编译安装,不过这个是最简单的。

创建缓存目录

mkdir -pv /data/nginx/cache
chown -R www:www /data/nginx

配置反向代理

首先是 nginx.conf 的修改,这里我根据我的需求删掉了很多东西和所有注释。

user  www www;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    include vhost/*.conf;
}

然后是最关键的反代和缓存部分,例如网站配置路径:/etc/nginx/conf.d/blog.nbqykj.cn.conf

proxy_cache_path  /data/nginx/cache/one  levels=1:2   keys_zone=one:100m max_size=256m;
proxy_cache_key  "$host$request_uri";
server
{
    listen 80;
    listen 443 ssl;
    server_name blog.nbqykj.cn;
    ssl_certificate    /data/ssl/blog.nbqykj.cn/fullchain.pem;
    ssl_certificate_key    /data/ssl/blog.nbqykj.cn/privkey.pem;
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    location / {
        proxy_pass  https://210.x.x.x;
 
        #Proxy Settings
        proxy_redirect     off;
        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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
    {
        proxy_pass  https://210.x.x.x;
        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_cache one;
        proxy_cache_valid  200 302  7d;
        proxy_cache_valid  404      1m;
        add_header X-Cache $upstream_cache_status;
    }
    location ~ /purge(/.*) {
        allow 210.x.x.x;
        deny all;
        proxy_cache_purge one $host$1$is_args$args;
    }
}

这里如果不使用 ipv6 可以删掉两个 ipv6 的监听,另外需要注意反代的协议类型。我源站也是使用的 https 所以 proxy_pass 也使用的 https://, 如果源站使用的 http 请换回 http。还有最下面的 allow, 这是刷新缓存白名单 ip, 使用白名单 ip 访问https://www.nbqykj.cn/purge/xxx.jpg 才可以刷新缓存,如果填写 0.0.0.0 则是所有 ip 都可以进行刷新操作,不推荐这样做。

启动

nginx -t
nginx -s reload

这样就把反向代理和缓存都设置好了,有需要的朋友试下吧。

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code