Varnish+Nginx搭建缓存服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
一. varnish
1.安装pcre库,兼容正则表达式
# tar -zxvf pcre-8.10.tar.gz
# cd pcre-8.10
# ./configure --prefix=/usr/local/pcre
# make && make install
2.配置安装varnish
# tar -zxvf varnish-3.0.2.tar.gz
# cd varnish-3.0.2
# export PKG_CONFIG_PATH=/usr/local/pcre/lib/pkgconfig/
# ./configure --prefix=/usr/local/varnish
# make && make install
3.修改varnish配置文件
/usr/local/varnish/etc/varnish/default .vcl
# mv default.vcl default.vcl.bak
# vi cq.vcl
backend cqserver {
.host =  "127.0.0.1" ;
.port =  "8087" ;
.connect_timeout = 20s;
}
acl purge {
"localhost" ;
"127.0.0.1" ;
"192.168.1.0" /24 ;
}
sub vcl_recv {
if (req.request ==  "PURGE" ) {
if (!client.ip ~ purge) {
error 405  "Not allowed." ;
}
return (lookup);
}
if (req.http.host ~  "^www.baidu.com" ) {
set req.backend = cqserver;
if (req.request !=  "GET" && req.request !=  "HEAD" ) {
return (pipe);
}
else {
return (lookup);
}
}
else {
error 404  "caoqing Cache Server" ;
return (lookup);
}
}
sub vcl_hit {
if (req.request ==  "PURGE" ) {
set obj.ttl = 0s;
error 200  "Purged." ;
}
}
sub vcl_miss {
if (req.request ==  "PURGE" ) {
error 404  "Not in cache." ;
}
}
(1)Varnish通过反向代理请求后端IP为127.0.0.1,端口为8087的web服务器,即nginx服务器监听端口;
(2)Varnish允许localhost、127.0.0.1、192.168.1.*三个来源IP通过PURGE方法清除缓存;
(3)Varnish对域名为www.baidu.com的请求进行处理,非www.baidu.com域名的请求则返回 "caoqing Cache Server"
(4)Varnish对HTTP协议中的GET、HEAD请求进行缓存,对POST请求透过,让其直接访问后端Web服务器。
4.启动varnish
# cd /usr/local/varnish/sbin/
# ./varnishd -f /usr/local/varnish/etc/varnish/cq.vcl -s file,/var/varnish_cache,1G -T 127.0.0.1:2000 -a 0.0.0.0:80
 
二. nginx
1.安装nginx
# rpm -ivh zlib-devel-1.2.3-4.el5.i386.rpm
# tar zxvf nginx-1.4.1.tar.gz
# cd nginx-1.4.1
# ./configure --prefix=/usr/local/nginx --with-openssl=/usr/lib --with-pcre=/root/tool/pcre-8.10 --with-http_stub_status_module
# make && make install
2.启动nginx
# cd /usr/local/nginx/sbin
# ./nginx
3.修改ngnix配置文件
测试配置文件 /usr/local/nginx/sbin/ . /nginx -t
# cd /usr/local/nginx/conf
# vi nginx.conf
#使用的用户和组
user  root root;
#制定工作衍生进程数(一般为CPU总核数两倍)
worker_processes  8;
#制定文件描述符数量
worker_rlimit_nofile 51200;
#指定错误日志存放路径
error_log  logs /error .log
#指定pid存放路径
pid        logs /nginx .pid;
event
{   
#使用网络I/O模型
      use epoll;
#允许的连接数
      worker_connections  65535;
}
 
http {
#访问日志存放路径
     access_log logs /access .log;
#开启gzip压缩
     gzip             on;
     gzip_min_length  1000;
     gzip_proxied     expired no-cache no-store private auth;
     gzip_types       text /plain text /css text /xml text /javascript application /x-javascript application /xml application /rss +xml application /xhtml +xml application /atom_xml ;
     gzip_disable  "MSIE [1-6].(?!.*SV1)" ;
#限定PHP-CGI的连接、发送和读取的时间为300s
     fastcgi_connect_timeout 300s;
     fastcgi_send_timeout 300s;
     fastcgi_read_timeout 300s;
#虚拟主机配置
server {
#监听端口
        listen 8087;
#主机名称
        server_name 127.0.0.1;
#google提供的DNS服务
        resolver 8.8.8.8
        location / {
#nginx作为HTTP代理服务器
             proxy_pass http: // $http_host$request_uri;
             proxy_set_header Accept-Encoding  '' ;
             proxy_redirect          off;
        }
}
}
 
三. 排错优化
1)修改环境变量
vi ~/.bashrc
PATH=$PATH: /usr/local/nginx/sbin : /usr/local/varnish/sbin /usr/local/varnish/bin
export PATH
2)nginx启动与关闭
参数:
- v :查看版本
-V:查看配置模块
-t:查看配置文件是否正确
-c:制定其他配置文件
pkill -9 nginx
3)varnish启动与关闭
参数:
-u:以什么用户运行
-g:以什么组运行
-f:varnish配置文件
-a:绑定IP和端口
-s:varnish缓存位置和大小
-w:最小,最大线程和超时时间
-T:varnish管理端口,主要用来清除缓存
pkill varnishd
varnish服务动态加载配置文件
#varnishadm -T 127.0.0.1:2000
vcl.load vcl-name_vcl  "配置文件路径" # vcl-name 这里可以任意取名
vcl.use vcl-name
vcl.show vcl-name  #显示vcl-name配置文件内容
# varnishncsa -w /usr/local/varnish/logs/varnish.log
将输出日志写入到制定日志文件。
4)修改windows客户端
C:\Windows\System32\drivers\etc\hosts
192.168.1.202 www.baidu.com
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值