nginx 配置优化的几个参数。
worker_processes 8,nginx要开启的进程数 ,一般等于cpu的总核数 其实一般情况下开4个或8个就可。
use epoll, Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。处理大量的连接的读写,Apache所 采用的select网络I/O模型非常低效。在高并发服务器中,轮询I/O是最耗时间的操作 目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。
worker_connections 65535;每个工作进程允许最大的同时连接数 (Maxclient = work_processes * worker_connections)
下面介绍http proxy模块中的相关指令:
proxy_next_upstream语法: proxy_next_upstream [error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off] 确定在何种情况下请求将转发到下一个服务器。转发请求只发生在没有数据传递到客户端的过程中。
proxy_connect_timeout后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_read_timeout连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
proxy_send_timeout后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
proxy_pass这个指令设置被代理服务器的地址和被映射的URI。
步入正题,开始配置nginx。首先打开nginx.conf文件
说明:
1、http段设置。
proxy_temp_path temp_dir;设置临时目录
proxy_cache_path cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;设置缓存目录为二级目录,共享内存区大小,非活动时间,最大容量,注意临时目录要跟缓存目录在同一个分区。
2、server段设置
请求静态文件设置。
proxy_cache cache_one;设置缓存共享内存区块,也就是keys_zone名称。
proxy_cache_valid 200 302 1h;设置http状态码为200,302缓存时间为1小时。
expires 30d;设置失期时间,为30天
请求动态文件设置。
proxy_pass http://appserver;不进行缓存,直接转到后端服务器。
测试:当客户端发起http请求时在服务器上会产一个缓存文件如
也可以通过Page Speed查看,页面有没被缓存过。
worker_processes 8,nginx要开启的进程数 ,一般等于cpu的总核数 其实一般情况下开4个或8个就可。
use epoll, Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。处理大量的连接的读写,Apache所 采用的select网络I/O模型非常低效。在高并发服务器中,轮询I/O是最耗时间的操作 目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。
worker_connections 65535;每个工作进程允许最大的同时连接数 (Maxclient = work_processes * worker_connections)
下面介绍http proxy模块中的相关指令:
proxy_next_upstream语法: proxy_next_upstream [error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off] 确定在何种情况下请求将转发到下一个服务器。转发请求只发生在没有数据传递到客户端的过程中。
proxy_connect_timeout后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_read_timeout连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
proxy_send_timeout后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
proxy_pass这个指令设置被代理服务器的地址和被映射的URI。
步入正题,开始配置nginx。首先打开nginx.conf文件
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
| user www www; worker_processes 2; error_log logs/nginx_error.log crit; worker_rlimit_nofile 65535; events { use epoll; worker_connections 65535; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 8m; sendfile on; tcp_nopush on; keepalive_timeout 0; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; ##cache## proxy_connect_timeout 5; proxy_read_timeout 60; proxy_send_timeout 5; proxy_buffer_size 16k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; proxy_temp_path temp_dir; proxy_cache_path cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g; ## end ## gzip on; gzip_min_length 1k; gzip_buffers 4 8k; gzip_http_version 1.1; gzip_types text/plain application/x-javascript text/css application/xml; gzip_disable "MSIE [1-6]\." ; log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for' ; upstream appserver { server 127.0.0.1; } server { listen 80 default ; server_name www.gangpao.com; location ~ .*\.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) { proxy_pass http: //appserver; proxy_redirect off; proxy_set_header Host $host ; proxy_cache cache_one; proxy_cache_valid 200 302 1h; proxy_cache_valid 301 1d; proxy_cache_valid any 1m; expires 30d; } location ~ .*\.(php)(.*){ proxy_pass http: //appserver; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; } access_log logs/www.gangpao.com.log; } } |
1、http段设置。
proxy_temp_path temp_dir;设置临时目录
proxy_cache_path cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;设置缓存目录为二级目录,共享内存区大小,非活动时间,最大容量,注意临时目录要跟缓存目录在同一个分区。
2、server段设置
请求静态文件设置。
proxy_cache cache_one;设置缓存共享内存区块,也就是keys_zone名称。
proxy_cache_valid 200 302 1h;设置http状态码为200,302缓存时间为1小时。
expires 30d;设置失期时间,为30天
请求动态文件设置。
proxy_pass http://appserver;不进行缓存,直接转到后端服务器。
测试:当客户端发起http请求时在服务器上会产一个缓存文件如
1
| cache/0/b9/8bd841b1c44ee5b91457eb561e44eb90 |