至于怎么安装nginx我不多说,大家看网上的资料应该就没问题了。
首先aaa.com是浏览者访问的域名,web.aaa.com:88是指被访问的真实网站所在域名。
1.来看看大多数情况:
server{ listen 80; server_name aaa.com; location / { proxy_pass http://web.aaa.com:88; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
这种情况的实用范围很广但也有它的局限性,一般用来建立镜像站点,当然这没有任何意义。
2.高级一点的,为什么说高级呢?因为网上这种方法介绍的很少:
server{ listen 80; server_name aaa.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host aaa.com; #定义主机头,如果目标站点已经绑定供浏览的域名则使用$host proxy_pass http://web.aaa.com:88; #被代理网站的IP地址 proxy_set_header Accept-Encoding ""; } }
这样设置与第一种有什么区别呢?第一种方法返回给后端服务器的是web.aaa.com的主机头地址,而这种方法返回给服务器的是aaa.com的主机头。都可以用来实现端口转换或web端口穿透。
3.假如我国外有一个网站ip:1.1.1.1用域名www.aaa.com访问,我在国内有一台服务器ip:2.2.2.2想用来缓存这个网站,加上智能dns实现简单的cdn效果如何设置呢?
首先设置智能dns国外线路解析到国外的网站ip:1.1.1.1,国内线路解析到国内缓存服务器ip:2.2.2.2,那么配置代码是:
server{ listen 80; server_name www.aaa.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host www.aaa.com; #定义主机头,如果目标站点已经绑定供浏览的域名则使用$host proxy_pass http://1.1.1.1; #被代理网站的IP地址 proxy_set_header Accept-Encoding ""; } }
但以上配置还没开启缓存功能,以下是开缓存,在配置文件中加入如下所示的内容:
http { proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g;
#设置缓存目录,缓存周期,缓存大小等。
server { location / { proxy_pass http://1.1.1.1; #被缓存服务器ip proxy_set_header Host $host; #定义主机头,可用实际网址替换$host proxy_cache STATIC; proxy_cache_valid 200 1d; #缓存状态200 时间1天 proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; } } }
完整的例子
proxy_cache_path /www/web/cache levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g; server{ listen 80; server_name www.aaa.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host www.aaa.com; proxy_pass http://1.1.1.1; #被代理网站的IP地址 proxy_set_header Accept-Encoding ""; proxy_cache STATIC; proxy_cache_valid 200 1d; #缓存状态200 时间1天 proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; } }
扩展阅读:
nginx新开发的proxy_cache功能
从nginx-0.7.44版开始,nginx支持了类似squid较为正规的cache功能,目前还处于开发阶段,支持相当有限,这个缓存是把链接用md5编码hash后保存,所以它可以支持任意链接,同时也支持404/301/302这样的非200状态。
配置:
首先配置一个cache空间:
proxy_cache_path /path/to/cache levels=1:2 keys_zone=NAME:10m inactive=5m max_size=2m clean_time=1m;
注意这个配置是在server标签外,levels指定该缓存空间有两层hash目录,第一层目录是1个字母,第二层为2个字母,保存的文件名就会类似/path/to/cache/c/29/b7f54b2df555-5555d382f4809d65029c;keys_zone为这个空间起个名字,10m指内存使用大小为10MB;inactive的5m指缓存默认时长5分钟;max_size的2m是指最大缓存空间;clean_time指定一分钟清理一次缓存(某些版本不适应)。
location / { proxy_pass http://www.sudone.com/; proxy_cache NAME;#使用NAME这个keys_zone proxy_cache_valid 200 302 1h;#200和302状态码保存1小时 proxy_cache_valid 301 1d;#301状态码保存一天 proxy_cache_valid any 1m;#其它的保存一分钟 }
评论列表: