本文目录导航:
nginx反向代感性能详解(nginx反向代感性能详解-csdn)
1.简介本篇博文是《nginx成功灵活/静态文件缓存-技术流ken》的二部曲。
将具体引见nginx如何成功反向代理以及负载平衡技术,并辅以实战案例。
反向代理--“反向代理形式是指以代理主机来接受internet上的衔接恳求,而后将恳求转发给外部网络上的主机,并将从主机上失掉的结果前往给internet上恳求衔接的客户端,此时代理主机对外就体现为一个反向代理主机。
”负载平衡--“网络公用术语,负载平衡建设在现有网络结构之上,它提供了一种便宜有效透明的方法裁减网络设施和主机的带宽、参与吞吐量、增强网络数据解决才干、提高网络的灵敏性和可用性。
”成功反向代理1.几个概念反向代理:在收到客户端恳求之后,会修指标IP地址和端口正向代理:在收到客户端恳求之后,会修源IP地址和端口抢先主机:代理主机后端的哪些真正给客户端提供服务的节点,这样的主机称之为抢先主机下游主机:客户端就是下游节点2.反向代理指令模块:nginx_http_proxy_module指令proxy_pass:指定抢先主机的ip和端口proxy_set_header:指定在从新封装恳求报文的时刻,参与一个新的首部Syntax:proxy_passURL;Default:—Context:location,ifinlocation,limit_except例子:proxy_pass补充二补充2:假设location中经常使用了形式婚配,那么,location中的url会间接补充到代理节点的前面.此时,抢先主机的的前面不能有任何内容,包括/location~${proxy_pass
nginx性能
Nginx性能文件详解:
Nginx的主性能文件是,这特性能文件一共由三局部组成,区分为全局块、events块和http块。
在http块中,又蕴含http全局块、多个server块。
每个server块中,可以蕴含server全局块和多个location块。
在同一性能块中嵌套的性能块,各个之间不存在秩序相关。
性能文件支持少量可性能的指令,绝大少数指令不是特定属于某一个块的。
同一个指令放在不同层级的块中,其作用域也不同,普通状况下,高一级块中的指令可以作用于自身所在的块和此块蕴含的一切低层级块。
假设某个指令在两个不同层级的块中同时产生,则驳回“就近准则”,即以较低层级块中的性能为准。
比如,某指令同时出如今http全局块中和server块中,并且性能不同,则应该以server块中的性能为准。
全局块:
全局块是自动性能文件从开局到events块之间的一局部内容,重要设置一些影响Nginx主机全体运转的性能指令,因此,这些指令的作用域是Nginx主机全局。
理论包括性能运转Nginx主机的用户(组)、准许生成的worker process数、Nginx进程PID寄存门路、日志的寄存门路和类型以及性能文件引入等。
Nginx性能文件的具体说明
#运转用户user www-data;#启动进程,理论设置成和cpu的数量相等worker_processes 1;#全局失误日志及PID文件error_log /var/log/nginx/;pid /var/run/;#上班形式及衔接数下限events {use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种形式,然而仅用于linux2.6以上内核,可以大大提高nginx的性能worker_connections 1024;#单个后盾worker process进程的最大并发链接数# multi_accept on;}#设定http主机,应用它的反向代感性能提供负载平衡支持http {#设定mime类型,类型由文件定义include /etc/nginx/;default_type application/octet-stream;#设定日志格局access_log /var/log/nginx/;#sendfile 指令指定 nginx 能否调用 sendfile 函数(zero copy 形式)来输入文件,关于普通运行,#必定设为 on,假设用来启动下载等运行磁盘IO重负载运行,可设置为 off,以平衡磁盘与网络I/O解决速度,降落系统的 on;#tcp_nopush on;#衔接超时期间#keepalive_timeout 0;keepalive_timeout 65;tcp_nodelay on;#开启gzip紧缩gzip on;gzip_disable MSIE [1-6].(?!.*SV1);#设定恳求缓冲client_header_buffer_size 1k;large_client_header_buffers 4 4k;include /etc/nginx/conf.d/*;include /etc/nginx/sites-enabled/*;#设定负载平衡的主机列表upstream mysvr {#weigth参数示意权值,权值越高被调配到的几率越大#本机上的Squid开启3128端口server 192.168.8.1:3128 weight=5;server 192.168.8.2:80 weight=1;server 192.168.8.3:80 weight=6;}server {#侦听80端口listen 80;#定义经常使用访问server_name ;#设定本虚构主机的访问日志access_log logs/ main;#自动恳求location / {root /root; #定义主机的自动网站根目录位置index ; #定义首页索引文件的称号fastcgi_pass ;fastcgi_param script_FILENAME $document_root/$fastcgi_script_name;include /etc/nginx/fastcgi_params;}# 定义失误揭示页面error_page 500 502 503 504 /;location = / {root /root;}#静态文件,nginx自己解决location ~ ^/(images|javascript|js|css|flash|media|static)/ {root /var/www/virtual/htdocs;#过时30天,静态文件不怎样降级,过时可以设大一点,假设频繁降级,则可以设置得小一点。
expires 30d;}#PHP 脚本恳求所有转发到 FastCGI解决. 经常使用FastCGI自动性能 ~ $ {root /root;fastcgi_pass 127.0.0.1:9000;fastcgi_index ;fastcgi_param script_FILENAME /home/www/www$fastcgi_script_name;include fastcgi_params;}#设定检查Nginx形态的地址location /NginxStatus {stub_status on;access_log on;auth_basic NginxStatus;auth_basic_user_file conf/htpasswd;}#制止访问 文件location ~ / {deny all;}}}以上是一些基本的性能,经常使用Nginx最大的好处就是负载平衡假设要经常使用负载平衡的话,可以修正性能http节点如下:#设定http主机,应用它的反向代感性能提供负载平衡支持http {#设定mime类型,类型由文件定义include /etc/nginx/;default_type application/octet-stream;#设定日志格局access_log /var/log/nginx/;#省略上文有的一些性能节点#。
。
。
。
。
。
。
。
。
。
#设定负载平衡的主机列表upstream mysvr {#weigth参数示意权值,权值越高被调配到的几率越大server 192.168.8.1x:3128 weight=5;#本机上的Squid开启3128端口server 192.168.8.2x:80 weight=1;server 192.168.8.3x:80 weight=6;}upstream mysvr2 {#weigth参数示意权值,权值越高被调配到的几率越大server 192.168.8.x:80 weight=1;server 192.168.8.x:80 weight=6;}#第一个虚构主机server {#侦听192.168.8.x的80端口listen 80;server_name 192.168.8.x;#对aspx后缀的启动负载平衡恳求location ~ .*$ {root /root; #定义主机的自动网站根目录位置index ; #定义首页索引文件的称号proxy_pass;#恳求转向mysvr 定义的主机列表#以下是一些反向代理的性能可删除_redirect off;#后端的Web主机可以经过X-Forwarded-For失掉用户实在IPproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 10m; #准许客户端恳求的最大单文件字节数client_body_buffer_size 128k; #缓冲区代理缓冲用户端恳求的最大字节数,proxy_connect_timeout 90; #nginx跟后端主机衔接超时期间(代理衔接超时)proxy_send_timeout 90; #后端主机数据回传期间(代理发送超时)proxy_read_timeout 90; #衔接成功后,后端主机照应期间(代理接纳超时)proxy_buffer_size 4k; #设置代理主机(nginx)保留用户头消息的缓冲区大小proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream主机传}}}