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
|
Varnish+Nginx搭建缓存服务器
最新推荐文章于 2024-07-27 13:00:00 发布