架构简介

image-center

最外侧由 Nginx 做反向代理,中间由 Squid 提供缓存服务,后端网站服务用 Nginx。

服务地址及端口

Nginx reverse proxy : 192.168.1.101:80

Squid caching: 192.168.1.102:3128

Nginx web server: 192.168.1.103:80

Nginx - reverse proxy

配置

server 段落中使用 proxy_pass 指令,将请求转给 squid sever。

    server {
        listen       80;
        server_name  192.168.1.101;
        root         /usr/share/nginx/html;

        include /etc/nginx/default.d/*.conf;

        location / {
            proxy_pass http://192.168.1.102;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

Squid

配置

仅缓存 .txt 文件,给 squid 64 MB 的内存做缓存,指定 /var/spool/squid/ 为缓存目录。

http_port 3128 accel defaultsite=192.168.1.103 no-vhost
cache_peer 192.168.1.103 parent 80 0 originserver
cache_mem 64 MB
cache_dir ufs /var/spool/squid 100 16 256

acl allow_file url_regex -i \.(txt)
cache allow allow_file
refresh_pattern -i \.txt$ 43200 100% 43200

Nginx - web server

配置

默认配置就能满足要求,只需把网站服务运转起来。仅修改一下 IP 地址即可。

    server {
        listen       80 default_server;
        server_name  192.168.1.103;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

测试

从同一网络内其它机器进行测试,用 curl -I 分别访问 .txt.html.png 文件,观察其 hit cache 的情况。