nginx简介-安装与配置_第1页
nginx简介-安装与配置_第2页
nginx简介-安装与配置_第3页
nginx简介-安装与配置_第4页
nginx简介-安装与配置_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Nginx署20212团队名称(可选CopyrightByCattsoftAllRights修改记 概 专业术 目 安装前的准 Nginx安装所需文 Nginx安装步 Nginx启动、停 配置及应 Nginx基本配置格 Nginx全局配 Event模块配 HTTP模块配 日 使用include文 Nginx配置文件检测方 Nginx配置文件样 Nginx小 Nginx标准模 Nginx可选模 Nginx邮件模 反向反向初印 反向的作 反向使用实 应用场 基于主机的控 应用场 Nginx的session保 应用场 https加密web应用场 负载均 应用场 缓存的使 Nginx缓存应用场 为某个特定路径限 应用场 限制搜索引擎的速 应用场 简单的防盗链配 应用场 URL重 应用场 应用场 Nginx下如何自定义404页 应用场 日志管 应用场 虚拟主机登陆验 通过htpasswd命令生成用户名及对应数据库文 通过htpasswd命令生成用户名及对应数据库文 应用场 平滑重启nginx服 应用场 日志切 应用场 配置示 参数介 效果测 测试说 测试效 常用命 配置示 常见错误处 附 参考资 修改记1年月日220166日3年月日45概Nginx("enginex")是一个高性能的HTTP和反向服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由IgorSysoev为俄罗斯量第二的Rambler.ru0.1.02004104日。其将源代码以类BSD证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。201161日,nginx1.0.4发布。Nginx是一款轻量级的Web服务器/反向服务器及电子邮(IMAP/POP3)服务器并在一个BSD-like协议下由俄罗斯的程序设计师IgorSysoev所开发,供大型的及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,陆使用nginx用户有:、新浪、网NginxNginx可以在大多数UnixlikeOS上编译运行,并有Windows移植版。Nginx1.4.02013424日发布,一般情况下,对于新建站点,建议使用稳定版作为生产版本,已有站点的升级急迫性不高。Nginx的源代码使用2-clauseBSD-likelicense。Nginx是一个很强大的高性能Web和反向服务器它具有很多非常优越国是做虚拟主机生意的们经常选择的软件平台之一。能够支持高达50,000Nginx为我们选择了epollandkqueue专业术正向、反向、 服务器与反向服务器的区 目nginx软件安装,为更好更快促进安装效率和安装标安装适用适用于IT运行中心生产环境下Linux、Windows操作系统上的Nginx1.9.14安装前的准查看操作系统版catLinuxLinuxversion2.6.18-164.el5(mockbuild@x86- )version4.1.2 (RedHat4.1.2-46))#1SMPTueAug1815:51:48EDT$ 安装方法Nginx3gzip模块需要zlib库(:)zlib-rewrite模块需要pcre库(ssl功能需要openssl库(: 注意:如果用源码安装的话,后面nginx--with-yumyinstallzlibzlib-developensslopenssl--develpcreyumygroupinstall"DevelopmentTools"DevelopmentLibraries"此命令可以接下来采用从官网安装包的方式来安装NginxNginx4nginx- (用于在Internet上提供性传输 (为了重写rewrite)4)zlib-1.2.8.tar.gz (为了gzip压缩)其中,nginx-1.11.1.tar.gz软件 路径可参考下图4.2.1所示4.2.13Mainlineversion:MainlineNginx目前主力在做的版本,可以说是开发Stableversion:稳定版,生产环境上建议使用的版本Legacyversions:nginx地址 路径可参考下图4.2.2所示我们日期的软件openssl地址pcre-8.38.tar.gz软件 路径可参考下图4.2.3所示pcre地址zlib软件 路径可参考下图4.2.4所示点击图4.2.4中的红框所示的zlib软件zlib地址Nginx接下来,分别安装openssl、pcre、zlib、nginx这几个软件。我们可 是/home/app/nginx。如下图4.2.5所示:安装指令1: (进入openssl安装包所在 指令2: 指令3: tar-xzvfopenssl-1.0.1t.tar.gz (解压openssl软件)指令 cdopenssl- (进入解压后的openssl软件文夹指令 ./configure&&make&&make (配置、编译、装安装指令1:cd/home/app/nginx(进入pcre安装包所在)指令2:ls 指令3:tar-xzvfpcre-8.38.tar.gz(解压pcre软件)指令4:cdpcre- (进入解压后的pcre软件文件夹指令5:./configure&&make&&makeinstall(配置、编译、装安装指令1:cd/home/app/nginx(进入zlib安装包所在)指令2:ls 指令3:tar-xzvfzlib-1.2.8.tar.gz(解压zlib软件)指令4:cdzlib- (进入解压后的zlib软件文件夹指令5:./configure&&make&&makeinstall(配置、编译、装安装nginx:(3个版本,根据目的来选择其中一个指令1: (进入nginx安装包所在 指令2: 指令3: tar-xzvf (解压nginx软件)指令4: (进入解压后的nginx软件文件夹)指令5:./configure--prefix=/home/app/nginx pcre=/home/app/nginx/pcre-8.38(此处有空格) 指令6; (编译指令7:makeinstall 加入ssl后的参考:configurearguments:--prefix=/home/app/nginx--with-openssl=/home/app/nginx/openssl-1.0.1t--with-pcre=/home/app/nginx/pcre-8.38--with-zlib=/home/app/nginx/zlib-1.2.7--with-http_stub_status_module--with-5“./configure--prefix=/home/app/nginxnginx的 ,如果不指 ,nginx的 会默认安装5openssl、pcre、zlibnginx3至此,nginxNginxnginxsbin:/home/app/nginx指令1:cd/home/app/nginx (进入sbin文件夹所在的 指令2:ls (查看指令1 指令3:cd (进入 指令 (查看 下的内容指令 (启动当启动后遇到下图4.2.6所示的问题时,说明80端口被占用,启动失败, ,是看不到nginx登录成功的页面提示的。指令1:fuser-ntcp80 (检查80端口被什么程序占用)指令2:kill-91904 指令3:./nginx 以上的3句指令操作如下图4.2.7所示:此时,在浏览器中输入虚拟机对应的IP地址,如下界面(4.2.8,nginxgroupadd-ruseradd-r-gnginx-s/bin/false-M#注意\./configure--sbin-path=/usr/local/nginx/nginx--conf-path=/usr/local/nginx/nginx.conf--pid-path=/usr/local/nginx/nginx.pid--with-http_ssl_module--with-pcre=../pcre-8.21 #--with-zlib=../zlib-1.2.8 #--with-openssl=../openssl-1.0.1--with-http_stub_status_modulenginxNginxStatus功能,用来Nginx--user=nginx注:编译好的nginx/usr/local/nginx/nginxV(具体路径以安装的为主)查看编译时候的参数启动/usr/local/nginx/nginx#/usr/local/nginx/nginxc/usr/local/nginx/nginx.conf#停止服sudokill`cat服务控制浏览器中输入localhost安装方法通过yum源来安装,如yum源不可用,可参考以下安装可用yum源先安装nginx的yumrpm-yuminfoyuminstallservicenginx

找 配置及应NginxNginx配置指本文的前提是你使用“4.2安装方法一”来安装nginx,如果你使用其它方nginxnginx就是一个二进制文件,它通过读入一个配置文件nginx.confnginx.confinclude包含若干子配置文件)来我们唯一修改的文件就是nginx.onfx不同模块的所有设置。你应该能够在服务器的/home/app/nginx/nginx-1.11.1/(本文指定该下存放ngingx.conf文件)中找到nginx.conf。首先,谈论一些全局nginx使用嵌套的花括号语法来定义选项。安装完成后nginx的主配置文件/usr/local/nginx/nginx.conf.default。其它子配置文件同样有一个.default结尾的备份配置文件。.default的作用是当你修改配置文件错误的时候,你可以快速回到1cp/usr/local/nginx/nginx.conf/usr/local/nginx/nginx.conf-每次修改完nginx.conf都要重新加载配置文件。1/usr/local/nginx/nginx-t1kill-HUP`cat若想要查看配置文件的全部内容,可参考“5.1.6NginxNginx基本的Nginx配置文件由若分组成。每一部分都是通过下列方法定义的 }NginxNginx1:cd/home/app/nginx/nginx-1.11.1(nginx.conf所在目指令2:ls (查看执行指令1后 指令3:vi (打开配置文件在nginx.conf文件中,Nginx中有少数几个高级参数配置在模块部分之上,所示: ”号开头的行均是注释,nginx不会解析。默认的配置文件有许 指令是以一个变量名开头(例如,worker_processes或pid),然后包含一个参数(例如,1或logs/nginx.pid)或者多个参数(例如,"logs/error.lognotice") 虽然nginx不解析空白符(例如tab,空格,和换行符),但是良好的缩进能提高你长期运行配置文件的效率。良好的缩进使配置文件读起来更流畅,nginx.conf文件中,Nginx中有少数的几个高级配置在模块部分之上,如。

userworkerworkerpid用于设置记录主进程ID注意:userpid一般按默认设置——我们一般不用改这些内容,因为更改worker_processes:定义了nginx对外提供web服务时的worder进程数。最优值取决于许多因素,包括(但不限于)CPU核的数量、数据的硬盘数量及负载模式。不能确定的时候,将其设置为可用的CPU内核数将是一个好的开worker_rlimit_nofile:workerNginx“ulimit-a”的文件,所以把这个值设高,这样nginx就不会有“toomanyopenfiles”问题了。Eventeventsnginx5.1.3

worker_connections:workerworker_rlimit_nofile,我们可以将这个值设得很高。socket(~64K),所以设置不multi_acceptnginxuseLinux2.6+,你应该使用epoll。如果你使用*BSD,你应该使用kqueue。想知道有关事件轮询?可参考百科吧(注意,想了解一切的话可能需要neckbeard和操作系(NginxHTTPHTTP模块控制着nginxhttp处理的所有特性因为这里只有很少的配http。"http这部分内容的开始"include"语句包含/usr/loca/nginx/mime.types文件到nginx.conf文件include语句所在位置。include对ningx.conf文件的可读性不能过多使用include,如果太多递归地include文件会产生,所以需要include你可以去掉log_format指令前的注释并修改这几行设置的变量为你想记录的gzip指令告诉nginx使用gzip压缩的方式来降低带宽使用和加快传输速度。gzipgzip:nginxsendfile:sendfile()发挥作用。sendfile()TCPsocket之间互相拷贝数据(或任意两个文件描述符)。Pre-sendfile是传送数据之前在用户空间申请数据缓冲区。之后用read()将数据从文件拷贝到这个缓冲区,write()将缓冲区数据写入网络。sendfile()OS因为这种拷贝是在内核完成的,sendfile()要比组合read()和write()以及打开关闭丢弃缓冲更加有效(有关于sendfile)。tcp_nopush:nginxtcp_nodelaynginxHTTP

access_log:设置nginx是否将日志。关闭这个选项可以让磁IO(aka,YOLO)error_log:nginxHTTP

keepalive_timeout:给客户端分配keep-alive超时时间。服务器将在这个超时时间过后关闭。它设置低些可以让ngnix持续工作的时间client_header_timeout和client_body_timeout设置请求头和请求体(各reset_timeout_connection:nginxsend_timeout指定客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端操作之间。如果在这段时间内,客户端没有任何数据,nginxlimit_conn_zon:设置用于保存各种key(比如当前连接数)的共享内存的参数。5m就是5兆字节,这个值应该被设置的足够大以(32K*5)32byte状态或者(16K*5)64byte状态。limit_conn:用于为给定的key设置最大连接数。这里key是addr,我们设置100,也就是说我们允许每一个IP100个连接。includeNginx的配置文件中,include

include:只是一个在当前文件中包含另一个文件内容的指令。这里我们使用它来加载稍后会用到的一系列的MIME类型。default_type:MIME-typeCharset:nginx压缩资源之前,如何查找gzip所

gzip:用于告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的gzip_disable:用于指定的客户端禁用gzip功能。我们设置成IE6或者更低版gzip_stati:用于告诉nginx在压缩资源之前,先查找是否有预先gzip处理过的使用最高压缩比,这样nginx就不用再压缩这些文件了(想要更详尽的gzip_static的信息,这里)。gzip_proxied:允许或者压缩基于请求和响应的响应流。我们设置gzip_min_length:设置对数据启用压缩的最少字节数。如果一个请求小于1000字节,我们最好不要压缩它,因为压缩这些小的数据会降低处理此请求的p_level1-9之间的任意数值,94,这是一个比较折中的设置。gzip_type:设置需要压缩的数据格式。上面例子中已经有一些了,你也可以再添加的格式

open_file_cache:open_file_cache_valid:在open_file_cache中指定检测正确信息的间隔时open_file_cache_min_uses:定义了open_file_cache中指令参数不活动时间open_file_cache_errors:指定了当搜索一个文件时是否缓存错误信息,也包server据server_nameHttp它们都包含在http部分里。定义一个IP地址/端组合,或UNIX域的套接字路径,格式如下:listenaddress[:port];listenport;listenserver}server

80default;location/ } location/{ index.html}}#2个虚拟主机,上面一个是默认虚拟主机(也可以不设置为默认,看情

listen:端口。端口一般都为http端口,server_name:当前服务的。用于定义的地址可以有多个,用空格隔开:例如server_name ,root:用于定义服务器的默认 index:Nginx接下来我们介绍下检查nginx配置文件是否正确的方法,如何检查nginx配置是否正确呢?用nginx-t命令就好了。Nginx安装后只有一个程序文件,本身并不提供各种管理程序,它是使用参数和系统信号机制对Nginx进程本身进行控制的。Nginx格式:/usr/local/nginx/sbin/nginx-1)-c<path_to_config>:使用指定的配置文件而不是 下nginx.conf,1:#cd(进入nginx的sbin)2:#./nginx-(检测配置文件语法问题3)-v:显示nginx指令1:#cd/home/app/nginx/sbin (进入nginx的sbin所在 指令2:#./nginx-v 4)-V:显示nginx的版本号以及编译环境信息以及编译时的参数。指令1:#cd/home/app/nginx/sbin (进入nginx的sbin所在 指令2:#./nginx-V 检测新的conf

测试当前nginx.conf文件是否正确,使用命令:#/home/app/nginx/sbin/nginx-t-c/home/app/nginx/nginx-1.11.1/nginx.conf confNginx是一个配置文件样本,它包含了之前讨论的绝大部分。具体配

#userwww-worker_processes#全局错误日志及PIDerror_log/var/log/nginx/error.log; events{ #epoll是多路复用IO(I/OMultiplexing)中的式,worker_connections1024;#单个workerprocess进程的最大并发#multi_accept}http#设定mime类型,类型由mime.type文件定义 default_typeapplication/octet-stream; #sendfilenginxsendfile函数(zerocopy方式)来输出文#必须设为on,如果用来进行等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的uptime. #keepalive_timeoutkeepalive_timeout65; gzipgzip_disable"MSIE[1- large_client_header_buffers44k;include/etc/nginx/conf.d/*.conf;include/etc/nginx/sites-enabled/*;upstreammysvrserver:3128server:80server:80}server .access.loglocation indexindex.phpindex.html fastcgi_paramSCRIPT_FILENAME$

include}# 500502503504/50x.html;location=/50x.html{ }location~^/(images|javascript|js|css|flash|media|static)/{root/var/www/virtual/htdocs;#30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可expires}#PHP请求全部转发到FastCGI处理.使用FastCGI默认配置.location~\.php${rootfastcgi_pass:9000;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAMEincludefastcgi_params;}location/NginxStatus{ auth_basic_user_fileconf/htpasswd;}#.htxxx文location~/\.ht{denyall;}}}NginxNginx的配置文件。模块化的本质很值得思考,从某种意义上讲,Nginx本身也是模块化的。全局的配置区段负责各个方面,对Nginx来说就是一个整体。Nginx负责的每种协议单独成为一部分。我们可以通过指定协议(http协议或mail协议)配置内的server,来定义如何处理每个请IPhttplocations来匹URIlocations可以嵌套使用,也可以按其他顺序使用,一遍可以Nginx基本配置的总Nginx模块Nginx模块必须在编译时就进行选择,目前不支持在运行时进行模块选择。在编译时,可以通过命令./configure--help运行所提供的配置来查看所有支持的编译选项列表(包含可选模块)。模块概览可参考“5.2模块概览”下的相Nginx模名 说配置epoll、kqueue、select、pollNginx这些模块是默认均被编译进去的,除非通过configure名说版禁用选基于客户端IPHttp求。AuthBasicHTTP认证Auto生翻译"User-Agent"字符串。对WebEmpty在内存中生成一个高1素、宽1像素的GIF,并对提供对FastCGI通过IP支持使用Gzip可以设定任意的HTTPLimit大数。从1.1.8荐用,建议使用LimitConnLimit可以定支持Memcached基于RefererHTTP支持SCGI议Split(ip_hashdirectiveonly)User用标。支持uWSGIX-类X-SendfileNginxconfigure名说版启用选的请求返回204或404状态码。Embedded允许在配置文件中使用Perl支持Flash(FlashStreaming根据来自MaxMind的GeoIP二Perftools支持性能工具Image支持使用Libgd对进行变换允许对mp4流进行寻址。Random Real允许将nginx作为后端服务器。Secure支持HTTPS/SSLStub支持WebDAV允许对页面使用XSLT进行后处Nginx名 说 配置参使Nginx能够处理/IMAP、POP3、SMTP协议使用Nginx为邮件服务进行认证使Nginx能够IMAP、POP3、SMTP协议该模块可以让POP3/IMAP/SMTP使用SSL/TLSNginx的应用实下图是Nginx架构的企业级应用 参考应用场景(以下场景,均可用到HALBNginx实现反向Nginx企业级需求场景客户端静态的请求,由nginx反向给后端的Apache服务器客户端动态的请求,由nginx反向给后端的php-fpm(fastCGI)服务器,而且做负载均衡,如果需要数据库,则由php-fpm连接mysql;nginx服务器IP规划和所需软件安企业级规划需要解决的问题1)HA加入到heartbeat中,用heartbeat的 2)怎么实现LB负载均衡集群?思路:利用nginx的upstream模块,配置实现应用层的负载均衡。3)nginx怎么把客户的静态请求提交给后端的Apache服务器联系?思路:利用nginx的反向给后端的Apache服务器。nginxphp-fpmfastCGIphp-fpmmysql思路:mysql能让php-fpm服务器连接数据库反向初印反 :web服务器 反向(ReverseProxy)方式是指服务器接收internet上的客户端请自于服务器自身,此时从上图可以看出:反向服务器位于机房,Web服务器接Http请求,对请求进行转发。反向的作①保护安全:任何来自Internet的请求都必须先经过服务器。如下②通过配置缓存功能加速WebWebWeb..3反向使用实反向使用实例可参考“5.3Nginx的应用实例”下的其他小节例子应用场景一强安全所有internet上的请求,DNS解析后的ip都是反向的,然后由反向代理再去向内网服务器发请求,这样可以隐藏真实服务器的ip,防止外界的。应用场景二存静态文应用场景三载均像nginx这样的反向是可以用来作第七层负载均衡通过对url进行处基于主机的控allow[address|CIDR|all] address|CIDR|alllocation/ index.htmlindex.htm;allow/24;deny}enginx所在的虚拟机对应的IP是:8,当我们配好某个端口时(本例新增了一个81端口,默认的是80端口),如下图所此时,我们若在浏览器地址栏里输入,则会看到所示内容:我们接着在地址栏输入则会看到下图所示虽然页面报404,但是没有限制(forbidden),置于为什么不到将会在“5.3.11实现跳转中介绍”。应用场景一:限制某些IP当允许某个 ,需要在nginx.conf配置配文件中添加,具体如下allowallowdeny只允许和7来,其他的全部。应用场景二:限制特定 下限制IP,这个的作用主要就是是针对一些特定的 制,依然通过配置nginx.conf来实现。比如,只允许/24这个网段对w ,其他的全部,配置文件位置:/usr/local/nginx/conf/vhosts/nginx.conf。location/w/allow #这里的IP段就是允许的IPdenylocation~\.php$includefastcgi_passunix:/tmp/php-fcgi.sock;fastcgi_indexindex.php;}}locationphp,php应用场景三制某些浏使用user_agent控制客户端,就是可以限制某些浏览器来,只需要将浏览器的标示写入到规则里面就可以都是在nginx虚拟主机配置文件中if($http_user_agent return}location~\.php$includefastcgi_pass:9000;fastcgi_indexindex.php;}Nginxsession使用nginxsticky模块实现基于的负载均即一个ip一次始终就一个tomcat服务器,(当用户账户时,第一个页完成,执行下一步时即切换页面,不会切到另一台tomcat服务器另外一个ip下一台tomcat服务#nginx-sstop //给nginx添加模块徐重新编译,先stop#tarzxfnginx-sticky-module-1.1.tar.gz#cdnginx-1.4.2#makeclean http_stub_status_module--add-module=/root/nginx-sticky-module-1.1#make&&make#vim //配置文件中加入stickyupstreamexmp{serverserver}#nginx//启动nginx,就可以发现一个ip每次在有效时间内始终一tomcat实现JSP

由于前端Haproxy调度动态请求是roundrobin算法,故每次刷新都会轮询分配到不同的Tomcat节点上,且每次获得的session都是不一样的;所以要想sessionsession实现session绑TomcatsessiontomcatHaproxy当第一次成功后,再次刷新并不会改变分配的Tomcat节点和session实现session绑Tomcat支持Session集群,可在各Tomcat服务器间全部session信TomcatHaproxyTomcatsession注意:SessionTomcat10httpswebSSL(SecureSocketLayer接字层作为一种互联网安全加密技术,为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密它已被广泛地用于Web浏览器与服务器之间的认证和加密数据传输。SSLTCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSLSSL记录协议(SSLRecordProtocol):它建立在可靠的传输协议(如TCP)之上,为协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协(SSLHandshakeProtocol):它建立在SSL记录协议之上,SSLHTTPTCPSSL/TLS1cd2make 3cpcert.pem1vim //HTTPSserver段打开,即去掉2ssl_3 _key使用./nginxt-ssl的缘故。不信的话,可以通过指令:./nginx-VNginx的指所示:Nginx--with-http_ssl_module所示:

#./configure--prefix=/home/app/nginx--with-openssl=/home/app/nginx/openssl-1.0.1t--with-pcre=/home/app/nginx/pcre-8.38--with-1.2.7--with-http_stub_status_module--with-cert.pemOK应用场景一:内容加应用场景二 认保证用户的是的服务,即使被DNS劫持到了第站点,也会提应用场景二:数据完整防止内容被 冒充或者篡改负载均衡是我们大流量要做的一个东西,下面我来给大家介绍NginxN台服务器平均分担负载,不会因为某台服务器负载高宕机而使服务器出现闲nginx用来作为反向服务器,放置到两台后端服务器之前,作为用户的;nginx仅仅处理静态页面,动态的页面(php请求)统统都交付给的两也就是说,可以把我们的静态页面或者文件放置到nginx的 的页面和数据库都保留到的服务器上。VMware测

AIP:8(主BIP

CIPA服务器做为主服务器,直接解析到A服务器(8)上,AB(9)C(0)由于不是真实环境,就使用 在hosts文件设置,操作如下:1:#vim然后加入 ,如下图所示退出保存后,然后启动命令模式下看看是否已设置成功2:#从截图上看已成功 解析到8IPAnginx.conf打开nginx.conf,文件位置在nginx安装 的conf 在http段加入以下代码 }listen;location/;X-Real-X- }}nginx,B、Cnginx.confnginx.confi,httplisten80; indexindex.html;root}当的时候,为了区分是转向哪台服务器处理我分别在B、C服务index.html打开浏览器结果,刷新会发现所有的请求均分别被主服务(8)B(9)C(0)BC当某台服务器宕机了,是否会影响呢我们先来看看实例,根据以上例子,假设C0机了(由于无法模拟宕机,所以我就把C服务器关机)然后再来看看。我们发现,虽然C服务器(0)宕机了,但不影响。这Nginx最大的好处就是负载均衡,如果要使用负载均衡的话,可以修改配置文件http节点,加入如下内容(具体以个人情况为准):upstreamexample weight=5downserver:8080 serverunix:/tmp/backend3;}weightmax_failsfail_timeoutserver的不成功的请求次数,达到此数目后,此服务器将变为不可操作状态;默认值为1;设定为0值则fail_timeout10down 当其他负载均衡的服务器都挂了,才会启用backup想让那个server实现负载均衡,就修改其server{}内的语句server{ #access_log logs/.access.logmain;location/{}}置文件”中的配置文件上改动的,其中省略了部分节点内容http#设定mime类型,类型由mime.type文件定义 default_typeapplication/octet-stream; upstreammysvr{serverx:80weight=1;serverx:80}upstreammysvr2server192.168.8.x:80weight=1;server192.168.8.x:80}server{ server_namelocation~.*\.aspx$ indexindex.phpindex.htmlindex.htm; proxy_pass;#请求转向mysvr定义的服务器列表proxy_redirectoff;#后端的WebX-Forwarded-For获取用户真实IPproxy_set_headerHost$host;proxy_set_headerX-Real-IPproxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;client_max_body_size10m; client_body_buffer_size128k;#缓冲区缓冲用户端请求的最大字超时收超时

proxy_connect_timeout90;#nginx跟后端服务器连接超时时间(连proxy_send_timeout90; proxy_read_timeout90; proxy_buffer_size proxy_buffers4 proxy_busy_buffers_size64k; proxy_temp_file_write_size64k;#设定缓存文件夹大小,大于这个值,将}}}举个例子,没有负载均衡,没有nginx10011010如果有了nginx10010101算什么,追求的是高并发处理。NginxNginx之所以为广大码农喜爱,除了其高性能外,还有其优雅的系统架构。与Memcached的经典多线程模型相比,Nginx是经典的多进程模型。Nginx启动后以daemon的方式在运行,进程包含一个master进程和多个worker.1所示:masterworker4workerwoker进程的运行状态。wokerwoker进程个数一般设置为机器CPUNginxNginx进程的控制主要是通过master1可以看出,masterwoker进程,那么,可以通过kill向master进程发送信号,比如killHUPpidNginx从容重启。所谓master进程,比如-sreloadNginxreload参数后会向然也可以这样./nginx-sstopNginx。NginxLibevent,具体过程.2:masterlistensocketforkwoker进程,workacceptsocketclient连接到来时,所有acceptworkaccept成功,其它的则会acceptNginx提供了一把共享锁accept_mutex来保证同一时刻只有一work进程在acceptworkeraccept这个连接后就开始请求解析请求处理请求产生数据后再返回给客户端,Nginx levels指定该缓存空间有两层 2keys_zone=STATIC:1m参数用来为这个缓存区起名(proxy_cache指令需要用到其后对应缓存区名称),:1m1MBinactive=24h24小时(天:d、秒:s、分:m)内没有被max_size=1gHTTPserver location/{proxy_pass Real-ip$remote_addr; X-Real-IP$remote_addr;proxy_set_headerHost$host; 1d;#200的文件,指定缓client_max_body_size #数连接超时时

client_body_buffer_size #缓冲区缓冲用户端请求的最proxy_connect_timeout #nginx跟后端服务器连接超时时间(proxy_send_timeout #后端服务器数据回传时间(发送proxy_read_timeout90;

proxy_buffers432k;#proxy_buffers32kproxy_busy_buffers_size64k;#高负荷下缓冲大小(proxy_buffers*2)proxy_temp_file_write_size64k; 将从upstream errortimeoutinvalid_headerhttp_500http_502http_503}location~.*.jsp${indexindex.jsp;proxy_pass}#请求的jsp页面交给;这台服务处}Nginx缓存location~{expires}#缓存js/csslocation~{expires}5.3.6

应用场景一:使用缓冲释放后端服反向的一个问题是大量用户时会增加服务器进程的性能冲击影响。Nginx当到另一台服务器,两个不同的连接速度会影响客户的体验:连接一:从客户机到Nginx的连接连接二:从Nginx到后端服务器的连接Nginx快使数据到客户端,有了缓冲,Nginx将暂时后端的响应,然后按需供Nginx应用场景二:配 服务缓存来减少响应时尽管缓冲可以帮助释放后端服务器以处理的请求,Nginx还提供了一种serverlocation/downloads/limit_rate256k;limit_rate_after20m;root/var/www/html;}}5.3.7

nginx做服务器,在性能上满足需求。自带limit模块可以做限速和限程的工具太多,为了保证带宽的使用。特做了单IP并发连接数并限制if($http_user_agent~|Yahoo|MSN|baidu){limit_rate128k;}limit_rate_after20m表示的前20M不做限limit_rate5.3.8

蛛,别的蜘蛛来的话,直接跳转到大比如。作为重要的耗流量大的静态资源,可能主并不希望其他直接用,Nginx可以通过referer来防止外站盗链location~*\.(gif|jpg|png|swf|flv)${valid_referersnoneblockedif($invalid_referer)rewrite^/ #return404}}5.3.9

盗链是指一个的资源 或附件 在其它提供浏览和location,就可以实现简单的和其它类型文件的防盗链,防盗链:如果你的是个步骤应该是先经过你的主页找到地址才能为了防止某些网友直接地址完全不通过主页,URL语则:rewriteregexreplacementflagflag的种类:last把当前的重写指令执行结束,并且重新启动匹配进程,一般都是用last 中止Rewirte,不在继续匹配 返回临时重定向的HTTP状态302 返回永久重定向的HTTP状态301/nignx/a.htmlURI。就相当于一个绝对路径,一个相对路径。 # 应用场景:实现跳转实现跳我们在“5.3.1基于主机的访问控制”中曾看到过在地址栏输入后,页面跳转到了的404页面,为啥没有进入凤凰网主页呢,要如何直接跳转到或者其他呢,本节的“实现跳转”实现跳转的方式我目前总结了3种分别是通过在server{}中使用命令实现、通过proxy_pass命令实现、通过return命令实现。接下来分别介绍这3种跳转方法:方法在server{}中重写地址来实现跳转,如下图所示配置文件nginx.conf中的配置代码如(如图红框所示serverlisten indexindex.htmlindex.htmindex.php;#索引文件的名rewrite^/ access_log}端为:83,服务器名字叫: ,将要的地址重写为:^/ 选择关闭(off)。4.2.1Nginx后,在浏览器地址栏中输入后出现的页面(由于不输入端口,默认为80端口)。此时,我们新建了一个端为83的虚拟服务器,在浏览器地址栏中输入所在此,需要再次说明一件事:我们在Nginx的使用过程中,唯一要配置的文件就是安装下/home/app/nginx/conf/nginx.confNginx的使用主要是对这个配置文件nginx.conf的操作了。对于这个的重视将会使你更Nginx。方法通过proxy_pass命令实现跳转,如下图所示配置文件nginx.conf中的配置代码如location/proxy_pass }location{}location方法中参考上图写入要跳转的地址即可。此时我们在浏览器中输入:后,看到页面发生了跳转,如下图(跳转前)和图实验证明方法二也是可以使跳转的方法所示:配置文件nginx.conf中的配置代码如location/ index.htmlindex.htm;#allow8;#denyreturn }如上图所示,我们新建了一个虚拟服务器,端为:82,新建了用匹配,如果没有其它匹配任何请求都会匹配到)。我们在地址栏中输入后)发现页面跳转到了优酷网,再看看配置文件中要跳转的:return 同理,在地址栏输入后,则会返回一个错误50所示:“5.3.12Nginx404页面”中做介绍。所谓转向,是指在时,服务商所提供的一项正常的增值服务,此服务是通过服务器的特殊技术设置,实现当您的时,将这个功能其实很有用的,举个粟子:某公司是,同时还、aaa、、.cn等等一大堆后缀的,但是没理由把所有都跟列出来同时公布吧,这样造成等不好影响,但是你可以将除了主之外的其它通过DNS配置实现中转或者转发,最终达到统一的作用。做这设置之后,当用户的时候就会转发到Nginx404IISAPACHE404NGINX的NGINX404404.html更改nginx.conf在http定义区域加入:fastcgi_intercept_errors更改nginx.conf(或单独配置文件,例如在nginx->sites-enabled下的站点配置文件)中的server区域加入:error_page404/404.html或者error_page404 /404.html,如下图所示:上图了(或)的404报错界面,如下图所示更改后重启nginx,,测试nginx.conf/opt/nginx/sbin/nginx–t#502等错误可以用同样的方法来配置。 500502503 404页面是必备的一个页面,它承载着用户体验与SEO优化的重任。404页面通常为用户了上不存在或已删除的页面,服务器返回的404错误。如果站长没有设置404页面,会出现死,蜘蛛爬行这类时,不利于搜索设置4041:引导用户不要关闭,增强用户体验2:防止出现死设计404页面的你可以遵循以下几条1:像门户一样5据卢松松观察,像网易、新浪、腾讯这类门户站的错误页面都是一样的,进入错误页面后提示5秒后返回频道首页。切忌不要404错误页面后,立刻返回首页,这些转向都使搜索2:像站长之家一样放出“砖家4页面要保证与自身风格类似,让它看上去还是你的站,再来点幽默搞笑的短语,请“砖家”在那里。给错误带上幽默的情节,原来错误也可以很美……切忌4设置成31重定向到首页这是对搜索引擎不友好的设置会让搜索引擎认为上有大量与首页内容相同的页面但可以把错误页面1定向到正确页面。3:也可以像Yahoo一样,能放的全塞进在404页面尽可能的给出对用户有用的,用丰富的内容把用户尽管内容很多,但最醒目的位置依然显示错误信息,提示用户,要的页面不存在然后上面加入导航右边放上下面再挤点图文并茂的文章这还不够最下面在仍点导航进去用户想不点都不行啊。4:还可以像我这样404错误并不可怕,可怕的是默认的“404NotFound”让用户摸不着头脑,这是怎么了?卢松松博客的404页面就是用的一段flash小游哎哟,这就是404错误页面了,来休息一下吧,这个游戏语则:log_formatnameformathttp{log_formatmy_log_fm'$http_x_forwarded_for-$remote_user'"$request"$status$body_bytes_sent''"$http_referer""$http_user_agent"';access_log/var/log/nginx/access.logmy_log_fm;error_log/var/log/nginx/error.logwarn;}$http_x_forwarded_for和$remote_user用于记录客户端网关的IP$time_local用于记录时间和时$request用于记录请求的URL和http$status$body_bytes_sent$http_referer用户记录请求是从哪个页面连接过来$http_user_agent记录类似apachelog_formatmain'$remote_addr-$remote_user[$time_local]'"$request"$status$body_bytes_sent"$http_referer"''"$http_user_agent""$http_x_forwarded_for"';access_log/var/log/nginx/access.log日志是用来记录信息的比如服务器的日志主要是用来记录一些信息,虚拟主机登陆验[root@rhel6u3-7[root@rhel6u3-7~vimusr/local/nginx/conf/nginx.conf主配置文件http字段中添加以下语句,将虚拟主机的配置文件指向include[root@rhel6u3-7~]#vimserver80; 端口为server_name;//虚拟主location/ sites/www1;//虚拟主 indexindex.htmlindex.htm;//虚拟主机首页auth_basic"secret";//虚拟主机认证命名auth_basic_user_fileusr/local/nginx/passwd.db }location/statusstub_statuson;//开access_log/usr/local/nginx/logs/www1_status.log;日auth_basic"NginxStatus";}[root@rhel6u3-7[root@rhel6u3-7serverhtpasswdcusr/local/nginx/passwd.dbxiaonuo//创建认证信息,xiaonuo为认证用户名Newpassword:*******//输入认Re-typenewpassword:********//Addingpasswordforuser[root@rhel6u3-76.[root@rhel6u3-7od400usr/local/nginx/passwd.db//修认[root@rhel6u3-7~chownnginx./usr/local/nginx/passwd.db//[root@rhel6u3-7~]#cat/usr/local/nginx/passwd.db//可以看到通过htpasswd生成的 10.10.[root@rhel6u3-7htpasswd[root@rhel6u3-7[root@rhel6u3-7serverhtpasswdcusr/local/nginx/passwd.dbxiaonuo//创建认证信息,xiaonuo为认证用户名Newpassword:*******//输入认Re-typenewpassword:********//Addingpasswordforuser[root@rhel6u3-76.[root@rhel6u3-7od400usr/local/nginx/passwd.db//修认[root@rhel6u3-7~chownnginx./usr/local/nginx/passwd.db//[root@rhel6u3-7~]#cat/usr/local/nginx/passwd.db//可以看到通过htpasswd生成的 [root@rhel6u3-7应用场景:提高安全性,有选择的过滤者nginx[root@rhel6u3-7[root@rhel6u3-7~etc/rc.d/init.d/nginxreload//平滑重启nginx服nginx:theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisoknginx:configurationfile/usr/local/nginx/conf/nginx.conftestisReloadingNginx主进程的方式来进行,而不用中断服务器。mkdir-p${logs_path}$(date-d"yesterday"+"%Y")/$(date-d"yesterday"#在上面 下,给日志创建以时间命名mv${logs_path}aa.access.log${logs_path}$(date-d"yesterday"+"%Y")/$(date-d"yesterday"+"%m")/$(date-d"yesterday"+"%Y%m%d").log#移动日志到日期命名 #crontab-0000***#servicenginxreload#servicecrondstart#chkconfigcrondon就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。向nginxUSR1nginx主进程接到信号后会从配置文件中日志文件名称,重新打开日志重新打

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论