user nobody nobody;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name web2.linux.com;
root /data/web;
location / {
index index.html;
}
}
然后在节点2的web根目录下创建index.html文件。
[root@CentOS7 ~]# echo "this is web2" > index.html
这样负载均衡服务器和后端服务器已经搭建完成,现在在浏览器中输入负载均衡服务器的ip,不停地刷新,结果会交替返回节点1和节点2的web页面。
8.Nginx的缓存服务器应用
这里使用的是Nginx自带的缓存模块,通过proxy_cache指令来实现。用于反向代理时对后端web服务器进行缓存。这里的实验以前一小节搭建负载均衡服务器为前提。在负载均衡服务器上设置缓存。nginx.conf文件中增加的内容如下:
http {
...
proxy_cache_path /data/cache levels=1:2 keys_zone=cache_one:1m inactive=1h max_size=1g;
proxy_temp_path /data/temp_cache;
server {
...
location / {
proxy_cache cache_one;
proxy_cache_valid 200 304 302 12h;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forward-For $remote_addr;
proxy_pass ;
expires 1d;
}
}
}
proxy_cache_path
/data/cache 定义缓存文件的目录
levels=1:2 定义目录深度,并且第一层目录为1个字符,第二层目录为2个字符。
缓存文件是以proxy_cache_key指令定义的key值进行hash得到的结果,例如生成的缓存文件为f9e228c5ead32aa97fe65df97a5b8196,从文件名的最右边开始,第一层目录的目录名为6,第二层目录的目录名为19。
keys_zone cache_one为自定义的缓存区的名称,1m表示内存缓存空间大小为1M
inactive 定义自动清除没有第二次访问的缓存文件的时间
max_size 当内存缓冲空间不足时,需要将缓存文件放到硬盘中,这里的max_size为存放缓存文件的硬盘空间最大值
proxy_temp_path 定义临时缓存文件路径