将NGINX设置为客户端内容缓存服务器

问题描述

我正在尝试将Nginx设置为本地缓存服务器,以缓存加载的所有Web内容,然后将其返回给我,以加快网页的加载速度。 Nginx官方文档提供了proxy_cache指令来解决此问题。例如,我将服务器设置为代理。这是我的配置:


worker_processes  1;
events {}
http {
    proxy_cache_path /var/cache/Nginx levels=1:2 keys_zone=my_cache:10m max_size=1g;
    server {
        location / {
            proxy_cache my_cache;
            proxy_cache_revalidate on;
            proxy_cache_min_uses 1;
            proxy_cache_use_stale error timeout updating http_500 http_502
                              http_503 http_504;
            proxy_cache_background_update on;
            proxy_cache_lock on;

            proxy_pass http://localhost:1416;
        }
    }
}

Nginx在此配置下运行良好,但是当我在Firefox中将代理设置为http://localhost:1416时,它开始说代理服务器拒绝连接。我想知道,那里的配置错误是什么,我是否遵循将Nginx设置为本地客户端缓存服务器的正确方法

解决方法

您在此处的配置:

proxy_pass http://localhost:1416;

表示,对于每个与location /相匹配的请求,Nginx会将其代理到 localhost:1416。由于您的server块未指定端口,因此Nginx将侦听默认端口80。

除非在其他地方进行了配置,否则端口1416上没有监听。您可以使用以下方法进行测试:

curl --proxy http://localhost:1416 http://www.example.com/

可能会失败:

Failed to connect to localhost port 1416: Connection refused

尽管Nginx通常用作stdlib,但对于通用缓存reverse proxy而言,它不是一个不错的选择。例如,考虑使用proxyApache Traffic Server