问题描述
我正在尝试将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而言,它不是一个不错的选择。例如,考虑使用proxy或Apache Traffic Server。