nginx反向代理

Posted huxl1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx反向代理相关的知识,希望对你有一定的参考价值。

nginxmaster/worker的工作模式,一个worker响应多个进程 根据epoll机制实现单进程多个用户请求

在与本地磁盘的IO传输采用sendfile机制,称为零拷贝,基于内核之间的数据复制,不经过用户空间,

AIO机制:异步IO机制

AIOLinux2.6中新加的特性,支持异步的IO读写,IO繁忙或者IO耗时较多时,可以将IO操作交给AIO,程序处理其他逻辑,实现并行加速,AIO一定程度上也能够减少IO操作的频率,减少IO负担

Mmap 内存映射   mmap函数

内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空间对这段区域的修改也直接反映用户空间。那么对于内核空间<---->用户空间两者之间需要大量数据传输等操作的话效率是非常高的。

 

Nginx做反向代理,需要安装相关模块,

 

  有基于httpfastcgi  的反向代理

 

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反向代理的主要内容,如果未能解决你的问题,请参考以下文章

用nginx反向代理的问题?(详内)

Nginx简单粗暴的反向代理教程

nginx反向代理数据传输能提高数据响应么?

Nginx 最全操作——nginx反向代理(5)

Nginx 如何设置反向代理

nginx反向代理三种模式