Nginx是一个高性能的HTTP服务器代理,实现对HTTP请求的处理。 它没啥别的本事,就是一个中介代理,把HTTP请求拦截下来之后交给Apache、Tomcat等WEB容器去处理。当然这个中介代理还会点武术的,它本身也可以完成对静态资源的请求处理,性能还不错,这个我在后面会讲到。
将一个请求,分摊给多个不同的服务器(WEB容器)去处理。这些服务器可能在一台主机上,也可以在其它主机,也可以是内网主机,也可以是外网。
就像你去餐厅吃饭,有配菜、炒菜、传菜、上菜等不同环节不同的人负责。这样整个餐厅就能为很多顾客服务,而且任何一个环节出错,比如服务员临时请假了,可以随时找另外的服务员替补,不会造成整个餐厅无法继续运营。如果是一家小饭馆,所以事情可能都是老板一个人去做。
将简单的静态资源请求交给自己(这方面Nginx性能也比较优越)或者其它服务器处理,将动态资源请求交给其它服务处理。
ps:我使用Windows进行本案例演示,如果需要在linux部署,需要下载linux版本。
访问官网,下载安装包:
http://nginx.org/en/download.html
解压当前电脑一个无中文字符、无空格的目录:
双击nginx,会看到一个黑窗口一闪而过:
在任务管理器种,如果看到如下两个进程运行(不能多,也不能少),代表启动成功:
conf:Nginx核心配置文件所在目录,其中重要的是nginx.conf文件,后面我们会使用到到它。
logs:日志目录,其中最主要的是errs.log文件,如果启动之后在任务管理器没有看到程序启动,可以通过分析该文件的错误输出定位问题。
temp:存放临时文件的目录。
html:存放静态资源的目录,当然你也可以在nginx.conf配置文件种指定其它位置。
在CMD进入Nginx安装目录:
start nginx代表启动Nginx:
nginx -v 查看版本号:
nginux -t 验证是否配置成功:
nginx -s reload 配置文件如果修改,重新进行载入使其神效:
nginx -s stop 正常停止或关闭:
nginx -s quit 快速停止或关闭:
这个是Nginx最有用,也是最核心的功能。一个Nginx可以配置多个虚拟服务器。Nginx通过监听80端口接收到HTTP请求,然后通过虚拟服务器的配置规则和条件将请求转发到其它服务器。 这就是实现负载均衡的主要技术原理。
我们打开conf/nginx.conf文件,如下图所示就是Nginx默认配置了一个虚拟服务器:
我们解释一下其中主要的几个配置项的作用:
listen 80; 监听所有80端口的访问。
server_name localhost; 监听主机名为localhost的访问。
当以上条件满足时,执行以下规则:
location / { /代表只要访问根路径,就执行以下内容
root html; 指定访问路径为当前html目录
index index.html index.htm; 如果不指定资源,默认访index.html 或者 index.htm
}
以上内容翻译成人话,就是:如果你访问localhost这个”域名“,不指定访问哪个页面,我就默认给你index.html 或者 index.htm。
我们来验证一下。
我们编辑 html/index.html:
然后在浏览器访问:localhost
证明了虚拟机配置所代表的含义。
下面还有一段配置,代表当出现500、502、404等错误时,访问/50x.html,而location又指明,50x.html的路径也在当前html目录:
server
在http的内容中可以配置多个server,每个server都是一个可以接收http请求的虚拟服务器。
listen
表示该server在nginx中运行时监听的nginx服务器上所有该端口的访问。
server_name
listen发现请求后,判断请求中的host头,匹配则进入该server。需要注意的是,不同的server配置,监听端口和域名名称不能相同!
location /
负责计算请求uri路径,判断和规则匹配与否,不匹配则不处理,一旦匹配进入到location。例如,location / 表示所有路径以/开始的都匹配。
location的匹配规则和优先级:
在同一个server的内容里,可以同时存在多个location,根据请求中携带uri地址结构不同值不同,分到不同location来出不同的请求。
涉及location pattern有哪些内容,多个location同时匹配成功时,优先级如何判断?匹配规则 按照从上到下匹配优先级规则:
通配
location /
只要满足server中端口和域名都能匹配到这个/
proxy_pass
表示代理路径,一旦进入location,可以通过这个关键字转向其它服务器。
有了以上的基础,我们可以着手配置负载均衡了。
在server的同级配置集群服务器列表:
然后配置具体规则。以下内容表示,只要用户通过浏览器访问/localhost/testMultis将分别交由upstream toservers{}中的服务器进行轮询处理:
以下配置内容,将按照10%,20%,70%的比例将请求交由这些服务器处理:
到此,Nginx的主要使用就介绍完了。