原创:https://blog.csdn.net/ndzjx/article/details/89420873
在Apache上每一个进程在一个时刻只处理一个请求。而Nginx则不然,一个worker进程可以同时处理的请求数只受限于内存大小。
如果确认不会出现阻塞式调用,有多少CPU内核就应该配置多少个进程;如果有可能出现阻塞式调用,那么需要配置稍多一些workder进程。
server_name与Host的匹配优先级如下:
1:完全匹配
2:选择通配符在前面的server_name,如*.testweb.com
3:选择通配符在后面的server_name,如www.testweb.*
4:选择使用正则表达式才匹配的server_name,如~^\.testweb\.com$
location [=|~|~*|^~|@] uri {…}
1:= 完全匹配
2:~匹配URI时是大小写敏感的
3:~* 忽略大小写
4:^~ 前半部分与uri匹配即可
5:@用于内部请求之间的重定向。(带@的location不直接处理用户请求)
最后一个 location 中使用 / 作为参数,它会匹配所有的HTTP请求。
HTTP请求中的keepalive功能是为了让多个请求复用一个HTTP长连接。
sendfile on|off;
发送文件,减少内核态与用户态之间的两次内存复制,从磁盘中读取文件后直接在内核态发送到网卡设备,提高了发送文件的效率。
upstream块定义了一个上游服务器的集群,便于反向代理中的proxy_pass使用。
ip_hash; 希望一个用户的请求始终落到固定的一台上游服务器中。ip_hash与weight配置不可同时使用,upstream集群中有一台不可用,不能直接删除,而是用down参数标识,确保转发策略的一贯性。
默认情况下,反向代理不会转发请求中的Host头部,如果需要转发,要加上配置:
proxy_set_header Host $host