nginx
Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP(邮件收发协议)代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。
三个主要应用场景
1、静态资源服务(通过本地文件系统提供服务)2、缓存、负载均衡服务器3、API服务(OpenResty)
单核cpu:一次只运行一个进程,设置运行的时间1ms,对于所有进程来说都希望可以争抢到cpu的执行权
死循环:密集型io;cpu无法释放
内核空间和用户空间
master进程主要来管理worker进程,具体包括以下的功能:
1.接收来自外界的信号
2.处理配置文件读取
3.创建绑定和关闭套接字
4.启动终止和维护配置的工作进程数
5.当worker进程退出后,会自动重启新的worker进程
server_name与Host的匹配优先级如下:
1)首先选择所有字符串完全匹配的server_name,如nginx.2367.com。
2)其次选择通配符在前面的server_name,如*.2367.com。
3)再次选择通配符在后面的server_name,如nginx.2367.*。
4)最后选择使用正则表达式才匹配的server_name,如~^\.testweb\.com$如果都不匹配1、优先选择listen配置项后有default或default_server的2、找到匹配listen端口的第一个server块
配置块:location
location语法:location[=|~|~*|^~|@]/uri/{...}配置块:serverlocation会尝试根据用户请求中的URI来匹配上面的/uri表达式,如果可以匹配,就选择location{}块中的配置来处理用户请求。当然,匹配方式是多样的,下面介绍location的匹配规则。
~表示执行一个正则匹配,区分大小写;
~*表示执行一个正则匹配,不区分大小写;
^~表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location;
=进行普通字符精确匹配。也就是完全匹配;
@它定义一个命名的location,使用在内部定向时,例如error_page,try_files
等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项前缀普通匹配(^~)优先级次之。不支持正则表达式。使用前缀匹配,如果有多个location匹配的话,则使用表达式最长的那个正则表达式类型(~~*)的优先级次之。一旦匹配成功,则不再查找其他匹配项常规字符串匹配,如果有多个location匹配的话,则使用表达式最长的那个
nginx常用命令
1、查看Nginx的版本号:nginx-V
2、停止nginx-sstop
3、退出nginx-squit
4、重启加载配置nginx-sreload
5、配置文件启动nginx-c</path/to/config>为Nginx指定一个配置文件,来代替缺省的
6、nginx-t不运行,而仅仅测试配置文件。nginx将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
nginx停止命令,等所有请求结束后关闭服务
Kill -QUIT nginx主进程号
重新载入配置
kill -HUP nginx主进程号