nginx反向代理
Posted huxl1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx反向代理相关的知识,希望对你有一定的参考价值。
nginx是master/worker的工作模式,一个worker响应多个进程 根据epoll机制实现单进程多个用户请求
在与本地磁盘的IO传输采用sendfile机制,称为零拷贝,基于内核之间的数据复制,不经过用户空间,
AIO机制:异步IO机制
AIO是Linux2.6中新加的特性,支持异步的IO读写,IO繁忙或者IO耗时较多时,可以将IO操作交给AIO,程序处理其他逻辑,实现并行加速,AIO一定程度上也能够减少IO操作的频率,减少IO负担
Mmap 内存映射 mmap函数
内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空间对这段区域的修改也直接反映用户空间。那么对于内核空间<---->用户空间两者之间需要大量数据传输等操作的话效率是非常高的。
Nginx做反向代理,需要安装相关模块,
有基于http, fastcgi 的反向代理
Nginx的功能:
1 提供web服务
2 http反向代理
3邮件服务代理
这里主要讲http代理:
代理分为正向代理和反向代理
正向代理:是指带表客户端去访问服务端,或去访问互联网,隐藏客户端 SNAT
反向代理:是指代替后端服务端去响应客户端,DNAT
Nginx是应用层服务,但它工作在传输层,伪传输层
应用ngx_http_proxy_module 模块来实现
后端服务器可以处于私网地址
实验 :两台服务器:
在rs 上:
1 安装web服务
Yum install httpd mod_ssl -y
创建网页
Vim index.html
2 配置ip 处于私网地址 192.168.10.2
Ifconfig ens33 192.168.10.2/24
启动服务
Systemctl start httpd.service
在ds上
1 有两块网卡一个在公网 192,168,220,135 一个私网192.168.10.1
注意各服务器之间要时间同步
安装nginx
# yum install nginx -y
修改配置文件
Vi /etc/nginx/nginx.conf
location ~*.(jpg|png)$ {
proxy_pass http://192.168.10.2:80;
}
Nginx -t 检查语法
Systemctl start nginx.service 启动服务
当后端服务器有两台,可以把一台访问静态资源 ,一台访问动态资源实现动静分离
Location / {
Proxy_pass http://192.168.10.3:80;
}
Location ~*.jpg$ {
Proxy_pss http://192.168.10.2:80;
}
Tcpdump -i ens33 tcp port 80; 可以通过抓包来查看ds 和rs 的数据包流动
Find /usr/share -name “*.jpg” --exec cp {} /var/www/html/
Nginx 反代模块:
1 proxy_pass URL : 定义转发
2 proxy_set_header value; 设定发往后端主句请求报文的首部值
3 proxy_set_header ip地址 $remote_addr; $remote_addr 是nginx的内建变量 存放着客户端地址
4Proxy_pass_header :把响应报文的某些首部直接传给客户端
5 Proxy_pass_request_headers: 把客户端的请求某些首部报文直接传给后端服务器
2 启用缓存功能 提高速度
缓存在本地的磁盘上
缓存是有固定级别的存放 一共有三级 1 :2 : 2 表示第一级 16个子目录 ,第二级:每个第一级子目录下有256个子目录
基于用户请求的URL 的哈希编码从右而左 取出对应字符来完成查找
Nginx的缓存有2步
1 存放在内存的哈希表
2 放在磁盘的 目录结构中
在哈希表中存放着键值对,根URL取出的哈希字符到哈希表中查看有没有对应的记录,若有在到磁盘上对应位置查取数据
Proxy_cache_path 定义存储路径 定义缓存空间
Proxy_cache 调用缓存 off表示关闭
实验:
修改配置文件
定义内存空间:
proxy_cache_path /data/nginx/cache levels=1:1:2 keys_zone=pcache:10m max_size=2g;
调用内存:
在server{
proxy_cache pcache;
}
Proxy_cache cache_name 调用缓存
Proxy_cache_key http://192.168.10.2:80; 把什么当键
Proxy_cache_valid 200 320 | any 10m; 对响应状态缓存多长时间
Proxy_cache_min_users number ; 指时间内需要至少连接多少次才不被定义为非活动项
Proxy_connect_timeout 面向服务器端的超时时间 不能超过75s 默认60s
Proxy_read_timeout 读取响应的时间多长
Proxy_send_timeout 向代理服务器发请求的超时时间
以上是关于nginx反向代理的主要内容,如果未能解决你的问题,请参考以下文章