文章转自:https://www.yunwei114.com/post/39.html

最近发现了阿里云推出了一款阿里云轻应用服务器,(是不是太out了,据说去年就有了),香港的阿里云轻应用服务器1G1核只要24元每月,而且最高30Mbps,CN2线路,于是马上买了下来。

刚好有个网站的流量多了起来,服务器虽说用的美国CN2线路,但是肯定没香港的CN2的好,少数价格高大上的除外。

那么就想用这个香港的vps做个反代加速。有考虑过使用fikker,但是免费版不支持缓存,那么暂时不考虑,就自己手动使用nginx反代自建CDN加速吧;

首先编译安装nginx;这是我的nginx -V:--prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.1.1b --with-pcre=../pcre-8.43 --with-pcre-jit --with-ld-opt=-ljemalloc --with-http_sub_module --add-module=/root/ngx_http_substitutions_filter_module --add-module=/root/ngx_cache_purge;



新建一个缓存文件夹:/home/caches/yunwei;

再建一个缓存的临时文件夹:/home/caches/yunwei/tmp;

设置缓存目录权限:chown -R www:www /home/caches/yunwei;

 然后在vhost下创建一个yunwei.conf;

 

proxy_cache_path /home/caches/yunwei levels=1:2 keys_zone=yunwei:192m max_size=2048m inactive=2h;

proxy_temp_path /home/caches/yunwei/temp;

upstream vps {

# server ip address;

}

server {

listen      443 ssl;

server_name yunwei114.com

            www.yunwei114.com;



ssl_certificate /usr/local/nginx/conf/ssl/www.yunwei114.com.crt;

ssl_certificate_key /usr/local/nginx/conf/ssl/www.yunwei114.com.key;

access_log  /data/wwwlogs/www.yunwei114.com_nginx.log combined;



 location ~.*\.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {

    proxy_pass https://ip;



    proxy_redirect off;

    proxy_set_header Host $host;

    proxy_cache yunwei;

    proxy_cache_valid 200 302 2h;

    proxy_cache_valid 301 1d;

    proxy_cache_valid any 1m;

    expires 10d;

   }

 location /nginx_status {

  stub_status on;

  access_log off;

  allow 127.0.0.1;

  allow ip;

  deny all;

         }



location / {

    proxy_pass      https://ip;

     proxy_redirect     off;

      proxy_set_header Accept-Encoding '';

      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_503 http_404;

       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;

    }

}

第一行的proxy_cache_path,代表缓存的存放目录,。keys_zone 设置缓存名字和共享内存大小,inactive 在指定时间内没人访问则被删除,max_size最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源。

[ levels = levels ]:

设置缓存目录层数,如levels=1:2,表示创建两层目录缓存,最多创建三层。第一层目录名取proxy_cache_key md5的最后一个字符,第二层目录名取倒数2-3字符,如:

proxy_cache_key md5为b7f54b2df7773722d382f4809d65029c,则:

levels=1:2为/home/caches/yunwei/c/29/b7f54b2df7773722d382f4809d65029c

levels=1:2:3为/home/caches/yunwei/c/29/650/b7f54b2df7773722d382f4809d65029c

我把80端口单独设了一个配置文件,然后301跳转https;

location ~..(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.) {

     这些匹配的是静态资源,缓存在反代机器上;

4.location / {

   proxy_pass      https://ip;

设置好请求头,并定义一些超时时间、缓存大小之类的参数,当然,你不设置也可以。

保存后,先nginx -t检查下有没错;然后重启nginx,解析指向反代机器生效后就可以正常反问了;

 静态资源,在缓存后直接由反代服务器发送,对于其他请求,反代服务器则充当中转的角色起到CDN加速作用。
Last modification:March 27th, 2021 at 11:48 am
如果觉得我的文章对你有用,请随意赞赏