- nginx 启动后,是由两个进程组成的:master(管理者)和 worker(工作者)
- 一个 nginx 只有一个 master,但可以有多个 worker
- 过来的请求由 master 管理,worke r进行争抢式的方式去获取请求
- 对于每个 worker 进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销, 同时在编程以及问题查找时,也会方便很多。Nginx 同 redis 类似都采用了 io 多路复用机制,每个 worker 都是一个独立的进程,但每个进 程里只有一个主线程,通过异步非阻塞的方式来处理请求, 即使是千上万个请求也不在话 下。每个 worker 的线程可以把一个 cpu 的性能发挥到极致。所以 worker 数和服务器的 cpu 数相等是最为适宜的。设少了会浪费 cpu,设多了会造成 cpu 频繁切换上下文带来的损耗。
在/usr/local/nginx/sbin下执行命令
启动:./nginx 关闭:./nginx -s stop 重新加载:./nginx -s reload
在/usr/local/nginx/conf/nginx.conf下放有配置文件
#worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约
worker_processes 1;
events {
#表示每个 work process 支持的最大连接数为 1024
worker_connections 1024;
}
#每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块
http {#全局块
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {#server 块:本虚拟机主机的监听配置和本虚拟主机的名称、IP 配置
listen 80;
server_name localhost;
#基于 Nginx 服务器接收到的请求字符串(例如 /uri-string)进行匹配,对特定的请求进行处理。
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
反向代理配置流程
- 在 windows 系统的 host 文件进行域名和 ip 对应关系的配置
编辑 C:WindowsSystem32driversetc 目录下的 hosts 文件:ip 映射域名(www.baidu.com)- 在 nginx 进行请进行反向代理配置
server {#server 块:本虚拟机主机的监听配置和本虚拟主机的名称、IP 配置 listen 80; server_name 映射域名; location / { root html; proxy_pass http://127.0.0.1:8081; index index.html index.htm; } }如上配置,我们监听 80 端口,访问域名为 www.baidu.com,不加端口号时默认为 80 端口,故访问该域名时会跳转到 127.0.0.1:8081 路径上
区分路径跳转不同资源
开发的端口: Nginx 监听:8001,tomcat 8081端口:8081,tomcat 8082端口:8082,通过 http://208.208.128.122:8001/vod/test.html、http://208.208.128.122:8001/vod/test.html 分别访问不同的资源
语法如下:
1、= :精确匹配。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:以 *** 开头的正则表达式。
负载均衡
http://208.208.128.122/a.htmlupstream myserver { server 208.208.128.122:8081; server 208.208.128.122:8082; } server { listen 80; server_name 208.208.128.122; location / { root html; proxy_pass http://myserver; index index.html index.htm; }
- 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。- weight
weight 代表权重, 默认为 1,权重越高被分配的客户端越多upstream myserver { server 208.208.128.122:8081 weight=10; server 208.208.128.122:8082 weight=20; }
- ip_hash
ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器upstream myserver { ip_hash; server 208.208.128.122:8081; server 208.208.128.122:8082; }
- Fair 根据后端服务器的响应时间来分配请求,响应时间短的优先分配
upstream myserver { fair; server 208.208.128.122:8081; server 208.208.128.122:8082; }
动静分离
- 新建文件夹 index 存放 静态页面,新建 images 文件夹存放图片
- 添加配置
location /index/ { root /data/; } location /images/ { root /data/; autoindex on; #列出当前目录文件列表 }
- 验证
http://208.208.128.122/image/ http://208.208.128.122/image/01.jpg http://208.208.128.122/index/a.html



