本篇要点:
1.nginx的启动,停止,重启
2.配置文件的结构
3.nginx如何作为静态资源服务器,如何作为代理服务器。
扯几句闲篇:
nginx启动后包括一个master线程和多个工作线程。master线程负责读取和更改配置文件,管理这些工作线程。
工作线程负责处理具体的请求。工作线程的数量可以在配置文件中设置。
nginx的控制命令:
nginx 启动
nginx -t 检测配置文件
ngixn -s stop:立即停止
ngixn -s quit:完成现有请求后,关闭服务器,优雅地停止服务
ngixn -s reload:重新加载配置文件。修改了配置文件后,需要执行本命令,新的修改才会生效。
nginx配置文件:
nginx包括多个功能模块,这些功能模块在配置文件中各项指令的控制下,完成工作。
nginx配置文件中的指令分为简单指令和括号指令。
简单指令以‘ ;‘分号结束。
括号指令以{}结束,括号内的指令属于同一个上下文。
整个配置文件的指令在一个main上下文中,
events和http在main下
server在http下
location在server下
#开头的表示备注
同个配置文件中有多个server,server通过监听listen端口和sever_name来区分。
决定了哪个server来处理请求后,还要决定由哪个location来处理。
同个server内包括多个location,通过uri来区分多个location。
location命令后紧跟了参数,参数包括前缀字符串和正则表达式两种
正则表达式用~开头
先匹配前缀字符串,找出最长匹配,如果该前缀字符串以^~开头,那么终止匹配,执行该location内的命令
否则继续匹配正则表达式,找到第一个匹配的正则为止,停止匹配,执行命令,否则回到最长的前缀字符串处,执行该命令
~区分大小写 ~*不区分大小写。
多个location中,以正则表达式为参数的location的优先级要高于普通表达式的location。
多个以普通表达式为参数的location,则匹配长度越长的优先级越高。
例子:
http{ server{ listen port; server_name hostname; location / { root path; index index.html; } location ~ 正则表达式{ root path; #匹配了正则表达式的uri,会直接返回 path/uri下的文件,例如请求localhost:port/ppath,会返回 path/ppath下的文件 } } }
ngixn作为静态资源服务器和反向代理服务器:
配置文件举例:
server { location / { proxy_pass http://localhost:8080/; } location ~ \.(gif|jpg|png)$ { root /data/images; } }
gif,jpg和png结尾的请求会直接返回 /data/images 目录下的文件,例如
http://localhost:80/1.jpg
如果 /data/images 目录下存在 1.jpg 则直接返回,否则返回404。
其他请求则会转发给
http://localhost:8080/
返回结果后,由ngixn将结果返回给客户端。
rewrite * * last;重新匹配loaction
rewrite * * break ,在当前context内匹配
upstream内的server 在failtimeout时间内,max_fail次不可用,则该节点不可用,不可用是指 建立连接错误和建立连接超时。不可用会指向下个节点,优先级高的节点不可用会指向backend
proxy_next_upstream,定义server不可用的定义(默认为建立连接错误和超时),可以设置为400,500等状态。
ps:nginx还可以作为fastcgi服务器的代理,fastcgi主要涉及php语言编写的服务器。