Nginx反向代理 负载均衡sky

Nginx服务部署

Nginx简介

Nginx (engine x) 是一个轻量级的、高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。是在一个BSD-like 协议下发行。

其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

官网和资料

官网:http://nginx.org/

中文文档:http://www.nginx.cn/doc/

nginx源码包下载:wget http://nginx.org/download/nginx-1.13.4.tar.gz

nginx官网rpm包下载:http://nginx.org/packages/centos/

Centos6的EPEL源:https://mirrors.tuna.tsinghua.edu.cn/epel/6/x86_64/

Centos7的EPEL源:http://mirrors.sohu.com/fedora-epel/7Server/x86_64/

nginx结构与扩展功能

工作结构:一个主进程(master)和多个工作进程(woker)。工作进程是单线程的,且不需要特殊授权即可运行。

扩展功能

kqueue (FreeBSD 4.1+),epoll (Linux 2.6+),rt signals (Linux 2.2.19+),/dev/poll(Solaris 7 11/99+),select,以及 poll 支持;

kqueue支持的不同功能包括 EV_CLEAR,EV_DISABLE (临时禁止事件), NOTE_LOWAT,EV_EOF,有效数据的数目,错误代码;

sendfile (FreeBSD 3.1+),sendfile (Linux 2.2+),sendfile64 (Linux 2.4.21+),和 sendfilev (Solaris 8 7/01+) 支持;

输入过滤 (FreeBSD4.1+) 以及 TCP_DEFER_ACCEPT (Linux 2.4+) 支持;

10,000 非活动的 HTTP keep-alive 连接仅需要 2.5M内存。

最小化的数据拷贝操作;

其他HTTP功能;

基于IP、端口和名称的虚拟主机服务;

Memcached 的 GET 接口;

支持 keep-alive和管道连接;

灵活简单的配置;

重新配置和在线升级而无须中断客户的工作进程;

可定制的访问日志,日志写入缓存,以及快捷的日志回卷;

4xx-5xx错误代码重定向;

基于 PCRE 的 rewrite 重写模块;

基于客户端IP 地址和 HTTP 基本认证的访问控制;

PUT,DELETE,和 MKCOL 方法;

支持 FLV (Flash 视频);

带宽限制。

Nginx架构原理

大致上Nginx的架构就是这样:

1.Nginx启动后,会产生一个主进程,主进程执行一系列的工作后会产生一个或者多个工作进程;

2.在客户端请求动态站点的过程中,Nginx服务器还涉及和后端服务器的通信。Nginx将接收到的Web请求通过代理转发到后端服务器,由后端服务器进行数据处理和组织;

3.Nginx为了提高对请求的响应效率,降低网络压力,采用了缓存机制,将历史应答数据缓存到本地。保障对缓存文件的快速访问;

工作进程

工作进程的主要工作有以下几项:

接收客户端请求;

将请求一次送入各个功能模块进行过滤处理;

IO调用,获取响应数据;

与后端服务器通信,接收后端服务器处理结果;

数据缓存

响应客户端请求;

进程交互

Nginx服务器在使用Master-Worker模型时,会涉及到主进程和工作进程的交互和工作进程之间的交互。这两类交互都依赖于管道机制。

1.Master-Worker交互

这条管道与普通的管道不同,它是由主进程指向工作进程的单向管道,包含主进程向工作进程发出的指令,工作进程ID等;同时主进程与外界通过信号通信;

2.worker-worker交互

这种交互是和Master-Worker交互是基本一致的。但是会通过主进程。工作进程之间是相互隔离的,所以当工作进程W1需要向工作进程W2发指令时,首先找到W2的进程ID,然后将正确的指令写入指向W2的通道。W2收到信号采取相应的措施。

Nginx服务器的事件驱动模型

从上面我们可以知道,Nginx服务器的工作进程调用IO后,就取进行其他工作了;当IO调用返回后,会通知工作进程。但IO调用时如何把自己的状态通知给工作进程的呢??

一般解决这个问题有两种方法:

(1)让工作进程在进行其他工作的过程中间隔一段时间就去检查一下IO的状态,如果完成就响应客户端,如果未完成,继续工作。

(2)IO调用在完成后能主动通知工作进程。

当然最好的就是用第二种方法了;像select/poll/epoll等这样的系统调用就是用来支持第二种解决方案的。这些系统调用也常被称为事件驱动模型。他们提供了一种机制就只让进程同时处理多个并发请求,不用关心IO调用的具体状态。IO调用完全由事件驱动模型来管理。

Nginx中的事件驱动模型

就是用事件驱动处理库(多路IO复用),最常用的就是select模型,poll模型,epoll模型。

关于这三个模型的详解在这里可以看到:https://segmentfault.com/a/1190000003063859

附:阿里云代金券1000元免费领取地址:https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=2a7uv47d
新老阿里云账户均可领取!可用于购买阿里云服务器ECS、云数据库RDS、虚拟主机、安骑士、DDoS高防IP等100多云计算产品。
代金券自领取之日起,有效期是30天,请及时使用,过30天后还可以重新领取。

nginx安装和配置

安装方法:1、用yum和rpm方式安装 2、编译安装

方法一:用yum安装nginx

实施思路:

1、 下载nginx-*.rpm软件包或配置网络yum源。

2、 用yum或rpm -ivh安装nginx软件。

3、 修改nginx.conf配置文件。

4、 启动nginx服务。本地访问测试。

具体实施:

1、 下载nginx-*.rpm软件包或配置网络yum源。

第1步,配置sohu网络yum源:

vim /etc/yum.repos.d/6sohu.repo

注:此处是sohu网的Centos6的yum源。

[6sohuyum]

name=6sohu_yum

baseurl=http://mirrors.sohu.com/fedora-epel/7Server/x86_64/

enabled=1

gpgcheck=0

vim /etc/yum.repos.d/6epel.repo

注:此处是Centos6的epel的yum源。

[6epel]

name=6epel

baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/6/x86_64/

enabled=1

gpgcheck=0

vim /etc/yum.repos.d/7sohu.repo

注:此处是sohu网Centos7的yum源。

[7sohuyum]

name=7sohu_yum

baseurl=http://mirrors.sohu.com/fedora-epel/7Server/x86_64/

enabled=1

gpgcheck=0

vim /etc/yum.repos.d/7epel.repo

注:此处是Centos7的epel的yum源。

[7epel]

name=7epel

baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/

enabled=1

gpgcheck=0

第2步,测试yum源是否可用。

yum clean all

yum makecache fast

yum repolist

yum list nginx

2、 用yum或rpm -ivh安装nginx软件。

yum install -y pcre-devel openssl-devel zlib-devel curl elinks lynx

yum install -y nginx

rpm -ql nginx

rpm -qc nginx

技巧:下载网络yum源中的nginx和依赖包到本地主机上。方法如下:

方法一:downloadonly插件(首选)

1.安装插件

yum   -y  install  yum-download

2.下载nginx软件包到当前文件夹的nginx目录中。

yum  -y  install   nginx  -downloadonly  -downloaddir= ./nginx/

方法二:yum-utils中的yumdownloader

1.安装yum-utils

yum  -y  install   yum-utils

2.使用yumdownloader下载软件包nginx

yumdownloader  nginx

方法三:利用yum的缓存功能

默认情况下,yum在安装软件包后会自动清理软件包,修改配置,使yum不再清理软件包

vim /etc/yum.conf中修改keepcache = 0改为keepcache = 1

/etc/init.d/yum-updatesd restart

yum -y install httpd

这时软件包已经安装下载,目录为/var/cache/yum

每一次启程都是从搬砖开始……

3、 修改nginx.conf配置文件。

rpm -qc nginx 查看配置文件

/etc/logrotate.d/nginx 日志轮滚策略

/etc/nginx/conf.d/default.conf 自动载的默认配置文件

/etc/nginx/conf.d/ssl.conf ssl配置文件

/etc/nginx/conf.d/virtual.conf 虚拟主机配置文件

/etc/nginx/fastcgi.conf fastcgi配置文件(与php交互)

/etc/nginx/fastcgi.conf.default fastcgi配置文件的备份

/etc/nginx/fastcgi_params fastcgi参数配置文件

/etc/nginx/fastcgi_params.default fastcgi参数配置文件的备份

/etc/nginx/mime.types 文件类型mime配置文件

/etc/nginx/nginx.conf nginx的主配置文件

/etc/nginx/nginx.conf.default nginx的主配置文件的备份

/etc/nginx/scgi_params scgi参数文件

/etc/nginx/uwsgi_params uwcgi参数文件

/etc/sysconfig/nginx nginx系统配置文件

4、 启动nginx服务。本地访问测试。

nginx -t 检测nginx.conf语法

service nginx restart 重启服务

chkconfig nginx on 设为开机启动

curl 127.0.0.1 本地访问测试

elinks 127.0.0.1 本地访问测试

service nginx status 查服务状态

service nginx stop 停止服务

查服务的进程:

ps aux|grep nginx

ps ef|nginx

查服务端口:

lsof -i:80

ss -atunlp|grep :80

netstat -atunlp|grep :80

方法二:用nginx-*tar.gz源码安装(见最后的附录)。

nginx 1.13.4简单编译安装

软件下载、安装:

说明:pcre(rewrite功能需要) openssl是提供ssl安全套接字功能,让nginx支持https协议

yum install -y gcc gcc-c++ pcre-devel openssl-devel zlib

id nginx ||useradd -r nginx

cd ~

wget http://nginx.org/download/nginx-1.13.4.tar.gz

ls

tar xf nginx-1.13.4.tar.gz

cd nginx-1.13.4

./configure –prefix=/usr/local/nginx \

–conf-path=/etc/nginx/nginx.conf \

–user=nginx \

–group=nginx \

–with-http_ssl_module

安装:

make && make install

设置环境变量:

echo “PATH=$PATH:/usr/local/nginx/sbin/” > /etc/profile.d/nginx.sh

source /etc/profile.d/nginx.sh

export /etc/profile.d/nginx.sh

手动启动nginx:

nginx -t 检测配置文件语法

nginx 启动nginx软件

nginx -h 查看帮助

nginx -v 显示编译安装的参数信息

服务管理:

nginx -s stop/quit 停止

nginx -s reload 重载新配置文件

curl 127.0.0.1 或 firefox 127.0.0.1 &

lsof -i:80 或ss -atunlp|grep :80 或netstat -atunlp|grep :80

说明:nginx官方没有提供服务启动脚本,需要自己写服务启动脚本。

nginx完整安装参考

软件下载

yum install -y gcc gcc-c++ pcre-devel openssl-devel

cd ~

wget http://nginx.org/download/nginx-1.13.4.tar.gz

ls

tar xf nginx-1.13.4.tar.gz

编译安装方法:

准备工作:安装编译器和依赖的软件

yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
Nginx模块必须在编译的时候指定,完整的编译选项,可用的模块可以参考安装指导
下面是一个例子:
id nginx || useradd -r nginx
cd ~/nginx-1.13.4
./configure \
–prefix=/usr/local/nginx \
–sbin-path=/usr/sbin/nginx \
–conf-path=/etc/nginx/nginx.conf \
–error-log-path=/var/log/nginx/error.log \
–pid-path=/var/run/nginx/nginx.pid \
–lock-path=/var/lock/nginx.lock \
–user=nginx \
–group=nginx \
–with-http_ssl_module \
–with-http_flv_module \
–with-http_gzip_static_module \
–http-log-path=/var/log/nginx/access.log \
–http-client-body-temp-path=/var/tmp/nginx/client/ \
–http-proxy-temp-path=/var/tmp/nginx/proxy/ \
–http-fastcgi-temp-path=/var/tmp/nginx/fcgi/
编译和安装:make && make install && echo ok
更多编译参数与可用的模块信息请运行./configure –help

启动关闭nginx

检查配置文件是否正确

/usr/sbin/nginx -t

mkdir -pv /var/tmp/nginx/client/

nginx -h #查看帮助

nginx -V # 可以看到编译选项

启动、关闭

nginx # 默认配置文件conf/nginx.conf,-c 指定

./sbin/nginx -s stop

或 pkill nginx

测试访问:curl 127.0.0.1 或 firefox 127.0.0.1 &

默认主页index.html的目录:ls /usr/local/nginx/html/

nginx简易的服务脚本:

vi /etc/init.d/nginx

!/bin/bash

chkconfig: - 85 15

nginx=’/usr/local/nginx/sbin/nginx’

case $1 in

     start)

               $nginx  -t && $nginx && echo start ok

     ;;

     stop)

               $nginx  -s  stop   && echo stop ok

     ;;

     reload)

               $nginx  -t && $nginx -s  reload   || $nginx   -s  stop

     ;;

     restart)

               $nginx  -s  stop   && echo stop ok

               $nginx  -t && $nginx && echo start ok

     ;;

     *)

               echo  "Usage nginx {start|stop|reload|restart}"            

     ;;

esac

添加x权限并测试:

chmod +x /etc/init.d/nginx

service nginx restart

nginx专业级服务脚本:

vi /etc/init.d/nginx 内容如下

!/bin/bash

chkconfig: - 30 21

description: http service.

Source Function Library

. /etc/init.d/functions

Nginx Settings

NGINX_SBIN=”/usr/local/nginx/sbin/nginx”

NGINX_CONF=”/etc/nginx/nginx.conf”

NGINX_PID=”/usr/local/nginx/logs/nginx.pid”

RETVAL=0

prog=”Nginx”

start() {

     echo -n $"Starting $prog: "

     mkdir -p /dev/shm/nginx_temp

     daemon $NGINX_SBIN -c $NGINX_CONF

     RETVAL=$?

     echo

     return $RETVAL

}

stop() {

     echo -n $"Stopping $prog: "

     killproc -p $NGINX_PID $NGINX_SBIN -TERM

     rm -rf /dev/shm/nginx_temp

     RETVAL=$?

     echo

     return $RETVAL

}

case $1 in

   start)

          start

          [  $?  -eq   0 ] &&  echo  "nginx   ok"  ||  echo   "nginx  error"

   ;;

   stop)

          stop

          [  $?  -eq   0 ] &&  echo  "nginx   ok"  ||  echo   "nginx  error"

   ;;

   restart)

          stop  && start

          [  $?  -eq   0 ] &&  echo  "nginx   ok"  ||  echo   "nginx  error"

   ;;

   *|"")

          echo  $"Usage:nginx {start|stop|restart|status}."

   ;;

esac

nginx.conf主配置文件

nginx配置文件结构(rpm方式)

cat -n /etc/nginx/nginx.conf

user nginx; 进程用户

worker_processes 1; 进程数(双核CPU可设置为2)

error_log /var/log/nginx/error.log; 错误日志

error_log /var/log/nginx/error.log notice; 错误日志为notice等级

error_log /var/log/nginx/error.log info; 错误日志为info等级

pid /var/run/nginx.pid; 进程的pid文件

events { 事件设置

 worker_connections  1024;    单个进程最在连接数

}

http { 配置http服务参数

 include       /etc/nginx/mime.types;      包含mime支持类型的配置文件

 default_type  application/octet-stream;      默认类型



 log_format  main  '$remote_addr - $remote_user [$time_local] "$request"  '  定义main日志文件格式

                  '$status $body_bytes_sent  "$http_referer" '

                  '"$http_user_agent"  "$http_x_forwarded_for"';



 access_log  /var/log/nginx/access.log  main;        访问日志

 sendfile        on;    开启sendfile功能

 #tcp_nopush     on;    不启用tcp_nopush功能

 #keepalive_timeout  0;

 keepalive_timeout  65;    指定保持连接的超时时间

 #gzip  on;    是否启用gzip功能

 # Load config files from the /etc/nginx/conf.d  directory

 # The default server is in conf.d/default.conf

 include  /etc/nginx/conf.d/*.conf;    包含分支配置文件(启动服务时加载这些配置文件)

} 结束http参数配置

default.conf默认网站配置文件

cat /etc/nginx/conf.d/default.conf

The default server 设置服务器配置文件(80端口的虚拟主机)

server { 虚拟主机配置

 listen       80  default_server;   监听80端口,并设置为默认服务器

 server_name  _;                服务器域名

 #charset koi8-r;     网站字符编码设置

 #access_log  logs/host.access.log  main;     访问日志类型为main类型

location / {    位置匹配设置

    root   /usr/share/nginx/html;    网站根目录

    index  index.html  index.htm;     默认主页文件名列表

}   位置设置结束



error_page  404              /404.html;    404错误代码及页面

location = /404.html {      位置匹配设置

    root   /usr/share/nginx/html;    位置的根目录

}  位置设置结束



 # redirect server error pages to the static page /50x.html

error_page   500 502 503 504  /50x.html;    500~504错误代码及页面

location = /50x.html {   位置匹配设置

    root   /usr/share/nginx/html;    位置根目录

}   匹配位置结束

 # proxy the PHP scripts to Apache listening on 127.0.0.1:80  代理PHP由后端的apache处理

 #location ~ \.php$  {      匹配以.php为后缀的设置

#    proxy_pass   http://127.0.0.1;       后端web服务器IP地址及协议

#}   匹配设置结束

 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

 #将PHP脚本发给端口为9000的FastCGI服务器处理,

#location ~ \.php$ {    匹配以.php为后缀的设置 

#    root           html;   网站根目录

#    fastcgi_pass   127.0.0.1:9000;    指定fastcgi服务器的IP和端口号

#    fastcgi_index  index.php;    指定主页文件

#    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  脚本文件名

#    include        fastcgi_params;   包含fastcgi_params参数配置文件

#    include        fastcgi.conf;      包含fastcgi.conf配置文件

#}  匹配设置结束



 # deny access to .htaccess files, if Apache's document root

 # concurs with nginx's one

 #

 #location ~ /\.ht {    匹配.ht的文件

 #    deny  all;      设置权限为拒绝访问

 #}   匹配设置结束

} 虚拟主机配置结束(与开头的server{的大括号配对)

nginx虚拟主机配置

cat /etc/nginx/conf.d/virtual.conf

虚拟主机配置文件模板

A virtual host using mix of IP-, name-, and port-based configuration

server { 定义虚拟主机

listen 8000; 指定监听端口

listen somename:8080; 指定域名和监听端口

server_name somename alias another.alias; 指定服务器域名

location / { 位置设置

root html; 网站根目录(html位于/usr/share/nginx/html),可用绝对路径

index index.html index.htm; 网站默认主页文件名

} 位置设置结束

} 虚拟主机设置结束

虚拟主机:在一台nginx服务器上发布多个不同的网站。

实现nginx虚拟主机的方法(三种方案可以综合应用):

1、 基于端口:将不同的网站绑定在不同的端口。

2、 基于IP:将不同的网站绑定在不同的IP地址。

3、 基于域名:将不同的网站绑定在不同的域名。需要在hosts文件或DNS服务器上登记域名和IP地址的对应解析关系。

练习:在nginx服务器上创建一个网站根目录/web/8080,并创建index.html主页,用nginx虚拟主机基于端口的方式发布这个网站,用独立的配置文件8080.conf,重启nginx服务后,并在本地做访问测试。

第1步,创建网站根目录和主页。

mkdir -pv /web/8080

echo www.8080.com > /web/8080/index.html

第2步,创建8080.conf配置文件,将网站绑定在8081端口进行发布。

cd /etc/nginx/conf.d

cp -v virtual.conf 8080.conf

vi 8080.conf 修改后的内容如下

server {

 listen       8080;

 #listen       somename:8080;

 server_name  www.8080.com  8080   8080.com;

 access_log  /web/8080/access.log  main;

 error_log  /web/8080/error.log;

 location / {

     root   /web/8080;

     index  index.html index.htm;

 }

}

第3步,检测配置文件语法,重启服务,本地访问测试。

nginx -t

service nginx restart

curl 127.0.0.1:8080 ; elinks 127.0.0.1:8081 本地访问测试

任务:参考/web/8080目录的网站发布的方法,将/web/8081目录的网站绑定在8081端口进行发布,并做访问测试。

Nginx文件共享:

文件共享设置

方法一:(首选)用nginx自带的index文件列表索引功能实现,只需要添加全局设置参数即可。也可以将autoindex功能代码添加到location代码段中

location / {

 root   /var;     #根目录路径

 autoindex  on;   # 显示目录

 autoindex_exact_size  on;   # 显示文件大小

 autoindex_localtime  on;    # 显示文件时间

 limit_rate_after  5m;       #5m之后下载速度为10k

 limit_rate  10k;            #限速10k

 #alias  /usr/local;        #别名

}

方法二:(备用)在location匹配代码段中用if对请求的文件类型判断,指定访问某些格式的文件时才会提示下载。

    location /  {

        #root    html;

        #index   index.html index.htm;

        if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){

        add_header Content-Disposition: 'attachment;';

        }

     }

实例:用nginx基于端口的方式发布/var目录,绑定在8001端口,实现文件共享功能。

第1步,修改配置文件。vim /etc/nginx/conf.d/8001.conf

server {

 listen       8001;

 #listen       somename:8001;

 server_name  www.8001.com  8001   8001.com;

 access_log  /var/8001_access.log  main;

 error_log  /var/8001_error.log;

 location / {

     root   /var;

     index  index.html index.htm;

    autoindex  on;

    autoindex_exact_size   on;

    autoindex_localtime  on;

 }

}

第2步,重启nginx服务,本地访问测试。(elinks是用q键退出)

nginx -t && nginx -s reload

elinks 127.0.0.1:8001 (elinks是用q键退出)

nginx访问控制表

访问控制表相关指令:allow、deny(ngx_http_access_module)

单看nginx模块名ngx_http_access_module,很多人一定很陌生,但是deny和allow相比没一个人不知道的,实际上deny和allow指令属于ngx_http_access_module.我们想控制某个uri或者一个路径不让人访问,在nginx就得靠它了。

nginx的访问控制模块语法很简单,至少比apache好理解,apache的allow和deny的顺序让很多初学者抓头.好了具体看下这个插件的使用方法吧。

1、安装模块

这个模块内置在了nginx中,除非你安装中使用了–without-http_access_module。如果你还没安装过nginx,那么请参考下ttlsa之前写的nginx安装.

2、指令

allow

语法: allow

设定查看Nginx状态的地址

location /NginxStatus {
# Turn on nginx stats
stub_statuson;
# I do not need logs for stats
access_log off;
# Security: Only allow access from 192.168.1.100 IP #
#allow 192.168.1.100;
# Send rest of the world to /dev/null #
#deny all;
}
负载均衡时session处理

  1. 利用nginx中upstream为ip_hash策略(简单快速,业务场景允许非重要性)
  2. 网络广播session同步(缺陷:数据量大时性能低下、网络容易造为性能瓶颈、集群环境中容器过多时性能下降)
    2.1 tomcat中,/tomcat/conf/server.xml

在后端服务器上(192.168.20.11),执行tcpdump -i eth0 -w tcp.pcap,然后用Wireshark来查看分析tcp.pcap文件

#推送tcp.pcap包文件到物理:scp tcp.pcap [email protected]:/root/

yum install -y wireshark wireshark-gnome

wireshark & 如下图

抓到的tcp.pcap内容如下:

Hypertext Transfer Protocol

GET / HTTP/1.0\r\n

X-Real-IP: 192.168.10.1\r\n  

Host: 192.168.20.8\r\n

X-Forwarded-For: 192.168.10.1\r\n

Connection: close\r\n

Accept: text/html, application/xhtml+xml, image/jxr,*/*\r\n

Accept-Language: zh-CN\r\n

Accept-Encoding: gzip, deflate\r\n

DNT: 1\r\n

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64;Trident/7.0; rv:11.0) like Gecko LBBROWSER\r\n

If-Modified-Since: Sat, 22 Oct 2016 02:31:03GMT\r\n

If-None-Match: "580acf67-264"\r\n

\r\n

[Full request URI: http://192.168.10.1/]

[HTTP request 1/1]

[Response in frame: 58]

你可能感兴趣的:(Nginx反向代理 负载均衡sky)