nginx复习005 反向代理配置+负载均衡+缓存

–安装tomcat(先安装java-jdk) 很简单 解压移动就行

—–反向代理

–配置方向代理
upstream server_name1 {
server 192.168.152.131:8080
}

sever {
listen 80;
server_name www.baicai.com;
location / {
#root html; #指向本地文件夹
proxy_pass http://server_name1; #转向到服务器
index index.html;
}
}

—–OpenResty 一个将nginx和lua语言通过内部整合的web平台 兼顾开发效率和高性能

—–负载均衡(类似反向代理在它基础上多个服务器,分担压力)
upstream sever_name2 {
sever 192.168.152.133:8080;
sever 192.168.152.131:8080;
}

sever {
listen 80;
server_name www.baicai.com;
location / {
proxy_pass http://server_name2;
index index.html;
}
}

—权重调整各个服务器的负载(upstream服务器列表控制)

upstream sever_name2 {
sever 192.168.152.133:8080 weight=10;
sever 192.168.152.131:8080 weight=2;
}

—–nginx实现静态资源的缓存

–nginx的web缓存
http的request和response过程即客户端发起一个url请求到web服务器,web服务器向客户端响应,如果让客户端先请求给一个缓存服务器由缓存服务器中间转发请求至web服务器,web服务器向客户端响应也是通过缓存服务器给客户端响应,这个就是nginx的代理功能,而且还有缓存功能,可以将web服务器的响应的信息缓存至内存或磁盘中,当用户再次发起相同的url时nginx就不用请求缓存服务器而直接从缓存中取出响应给客户端,从而大大提供请求响应的效率.
–要实现缓存,自身不能实现,要使用扩展插件,需要重新编译

–proxy_cache缓存过程
proxy_cache是nginx内置的一个缓存模块,它用于反向代理时对后端web服务的内容进行缓存.这里需要注意proxy_cache只在使用反向代理proxy_pass时进行缓存.
proxy_cache缓存过程如下:
1> 客户端第一次请求url,比如请求www.baicai.com/index.html
2> nginx计算url的哈希值 md5(url),得到一串数字fe74479206a9858c29625fd8f0ca1ea4
3> 创建缓存目录,写入缓存数据
如果缓存目录的规则设置为levels=1:2,创建目录如下:
取出fe74479206a9858c29625fd8f0ca1ea4的最后一位4作为目录名创建目录,在取出4的前面两位ea作为目录名为0的目录的子目录名,最后将代理获取的http响应数据存储在缓存数据文件中,缓存文件命名为fe74479206a9858c29625fd8f0ca1ea4写入4/ea目录下
4> 客户端再次请求相同url时,对url进行哈希得到缓存数据文件的地址,如果找到缓存数据则直接放回给客户端不再请求web服务器

–需求
1> 对静态文件进行缓存:html js css png fig jpg jpeg bmp swf
2> 对符合url规则的请求进行缓存
3> 对某个url进行清除缓存

–安装ngx_cache_purge(清除缓存)
ngx_cache_pruge是第三方开发的一个nginx模块,不包含在nginx的源码发布版中,他的作用是清理nginx缓存,对FastCGI proxy SCGI uWSGI缓存进行清除

–解压ngx_cache_purge,重新编译nginx
先备份之前的nginx
cp -r /usr/local/nginx /usr/local/nginx_old2
然后在之前基础上添加编译选项

./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/usr/local/src/ngx_cache_purge-2.3(新增了这行)

–参考
https://www.cnblogs.com/kevingrace/p/6198287.html
https://blog.csdn.net/fd2025/article/details/80506552
—–缓存配置

–http中配置
proxy_temp_path /var/temp/nginx/proxy; (代理临时目录)
proxy_cache_path /var/temp/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1d max_size=500m;
–proxy_temp_path和proxy_cache_path目录必须在同一个分区
–levels指定该缓存空间有两层hash目录
–keys_zone=cache_one:50m 缓存名称为cache_one 在内存中的空间为50M
–inactive=1d 表示1天清空一次缓存 max_size=500m指定磁盘空间大小为500M

–location中的配置

–清空缓存配置 注意必须放在最上面,当在请求url前加/purge/时将此url的缓存清空

location ~ /purge(/.*) {
    allow 127.0.0.1;#安全设置
    proxy_cache_purge cache_one $host$1$is_args$args;
}

–指定url缓存

location ~ /item(/.*) {
    proxy_cache cache_one;
    proxy_cache_key $host$uri$is_args$args;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    #如果不使用$1,则会访问http://server_name2/item/....
    proxy_pass http://server_name2$1;
}

–对静态文件的缓存

location ~ .*\.(html|js|css|gif|jpg|jpeg|png|bmp|swf)$ {
    #如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
    proxy_next_upstream http_502 http_504 error timeout invalid_header;
    #对不同HTTP状态码缓存设置不同的缓存时间
    proxy_cache_valid 200 10m ;
    proxy_cache_valid 304 1m ; 
    proxy_cache_valid 301 302 1h ;
    proxy_cache_valid any 1m ;

    proxy_cache_key $host$uri$is_args$args;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://server_name2;
}

—–nginx实现邮件服务(日后补,详情百度)

猜你喜欢

转载自blog.csdn.net/eebaicai/article/details/81275931