• 搭建Nginx图片服务器


    搭建Nginx图片服务器

    Part-I 安装Nginx

    1. 安装PCRE
    2. 下载 ngx_cache_purge 并解压,用来清除缓存
    3. 下载Nginx并解压
    4. cd nginx-1.7.7
    5. 编译,--prefix使用默认值,则nginx安装在/usr/local/nginx
      ./configure    --user=www    --group=www    --add-module=../ngx_cache_purge-1.0 
          --with-http_stub_status_module    --with-http_ssl_module
      make && make install

    Part-II 配置

    vim /usr/local/nginx/conf/nginx.conf,并编辑如下:

    user  www www;
    worker_processes  8;
    
    error_log  /data3/nginx/error.log  crit;
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    pid        /usr/local/nginx/nginx.pid;
    
    events {
        use epoll;
        worker_connections  65535;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        charset utf-8;
    
        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 300m;
    
        sendfile on;
        tcp_nopush on;
        keepalive_timeout 60;
        tcp_nodelay on;
    
        client_body_buffer_size 512k;
        proxy_connect_timeout 5;
        proxy_read_timeout 60;
        proxy_send_timeout 5;
        proxy_buffer_size 16k;
        proxy_buffers 4 64k;
        proxy_busy_buffers_size 128k;
        proxy_temp_file_write_size 128k;
    
        gzip on;
        gzip_min_length 1k;
        gzip_buffers 4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types text/plainapplication/x-javascript text/css application/xml;
        gzip_vary on;
    
    # proxy_temp_path 和 proxy_cache_path 必须在同一分区
        proxy_temp_path /data0/proxy_temp_dir;
    # 设置web缓存区名称为cahche_one,内存缓存空间大小为200M,1天没有被访问的内容自动清除硬盘缓存空间大小为300G
        proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
    
    #    upstream backend_server{
    #        server 192.168.1.121:80 weight=1 max_fail=2 fail_timeout=30s;    
    #        server 192.168.1.122:80 weight=1 max_fail=2 fail_timeout=30s;    
    #        server 192.168.1.123:80 weight=1 max_fail=2 fail_timeout=30s;    
    #    }
    
    #以下为缓存服务器
    
        log_format cache '***$time_local 
    '
                        '   $upstream_cache_status 
    '
                        '   $remote_addr, $http_x_forwarded_for 
    '
                        '   Cache-Control: $upstream_http_cache_control 
    '
                        '   Expires: $upstream_http_expires 
    '
                        '   "$request"($status) 
    '
                        '   "$http_user_agent" 
    ';
    
        server {
            listen       80;
            server_name  192.168.1.120;
    
            location / {
                proxy_cache cache_one;
                # 对不同的HTTP状态码设置不同的缓存时间
                proxy_cache_valid 200 304 12h;
                #以域名、URI、参数组合成web服务器的key值,Ngnix根据key值哈希,存储缓存内容到二级缓存目录内
                proxy_cache_key  $host$uri$is_args$args;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $remote_addr;
                #此处跳转到真实图片服务器
                proxy_pass http://192.168.1.120:8080;
    
                access_log /data3/nginx/cache.log cache;
    
                expires 1d;
            }
    
            location ~ /purge(/.*){
                #设置只允许指定的ip或ip段才可以清除url缓存  
                #allow 127.0.0.1;
                #allow 192.168.0.0/16;
                #deny  all;
                proxy_cache_purge cache_one $host$1$is_args$args;
            }
    
    #        #扩展名为.php、.jsp、.cig结尾的动态应用程序不缓存
    #        location ~.*.(php|jsp|cgi)?$
    #        {
    #            proxy_set_header Host $host;
    #            proxy_set_header X-Forwarded-For $remote_addr;
    #            proxy_pass http://backend_server;
    #        }
    
            access_log off;
    
            #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;
            }
    
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ .php$ {
            #    proxy_pass   http://127.0.0.1;
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ .php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:9000;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
            #}
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /.ht {
            #    deny  all;
            #}
        }
    
        #真实的图片服务器
        server{
            listen 8080;
            server_name localhost;
            location /{
                root /data0/images/;    
            }
    
            #访问日志,一般都off掉
            access_log /data3/nginx/access.log combined;
        }
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
        # HTTPS server
        #
        #server {
        #    listen       443 ssl;
        #    server_name  localhost;
    
        #    ssl_certificate      cert.pem;
        #    ssl_certificate_key  cert.key;
    
        #    ssl_session_cache    shared:SSL:1m;
        #    ssl_session_timeout  5m;
    
        #    ssl_ciphers  HIGH:!aNULL:!MD5;
        #    ssl_prefer_server_ciphers  on;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    }
    

    到此,Nginx图片服务区搭建完毕。 在/data0/images/下放入一张图片 200.jpg测试之 访问 http://192.168.1.120/200.jpg, cache_log记录如下:

    ***12/Nov/2014:16:15:26 +0800 
       MISS 
       192.168.1.19, - 
       Cache-Control: - 
       Expires: - 
       "GET /200.jpg HTTP/1.1"(200) 
       "Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0" 
    
    ***12/Nov/2014:16:15:38 +0800 
       HIT 
       192.168.1.19, - 
       Cache-Control: - 
       Expires: - 
       "GET /200.jpg HTTP/1.1"(200) 
       "Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0"

    访问 http://192.168.1.120/purge/200.jpg 清除缓存

  • 相关阅读:
    Java中的责任链设计模式,太牛了!
    醒醒吧,世界上有技术驱动型公司!
    现身说法:37岁老码农找工作
    如何快速安全的插入千万条数据?
    这个函数,1987年在这了,别动它!
    word自动备份,word误删内容恢复
    给Ubuntu 16.04更换更新源
    Django分别使用Memcached和Redis作为缓存的配置(Linux环境)
    Pycharm远程连接服务器,并在本地调试服务器代码
    Navicat远程连接阿里云服务器的mysql
  • 原文地址:https://www.cnblogs.com/fx2008/p/4165391.html
Copyright © 2020-2023  润新知