1.由于在nginx中需要配置很多东西,就会使得nginx.conf配置文件过于臃肿,所以我们会将配置文件合理的切分。大体的配置依然在nginx.conf中,其他的配置会放在etc下面的目录中。
2.etc文件中一般是放置配置文件的,所以 在 etc 中新建目录
mkdir -p /etc/nginx/conf.d
cd /etc/nginx/conf.d
创建一个文件:vim virtual.conf ,创建一个虚拟主机配置文件
3.将nginx.conf中 注释掉的配置 全部删除掉,并将 upstream 和 server 段 复制到 /etc/nginx/conf.d/virtual.conf中。如下:
1)nginx.conf:
worker_processes 4;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf; # 增加这一个,引用 /etc/nginx/conf.d 下面所有的配置文件
}
2) virtual.conf:
upstream tomcat {
server 192.168.80.128:8088;
server 192.168.80.128:8089;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcat;
}
}
4.访问 http://192.168.80.128/,出现tomcat的主页,ok,成功!
Nginx是一个master和worker的模型。master主要用来管理worker进程,master就比作老板,worker就是打工仔,master指挥worker来做事情。下图是nginx的进程模型:
master进程:
1.接收外界的信号,例如:kill -QUIT,kill -HUP
kill -HUP 重新加载配置文件,然后重新启动新的worker进程,老的还在运行,同时,向老的worker进程发送退休命令,老的worker进程将原有的请求处理完之后,就退休,不会接收新的请求,自毁,新的worker进程处理新的请求。
2.向各个worker进程发送信号
3.监控worker进程
4.当worker进程因异常退出,会自动启动新的worker进程。
woker进程:
处理客户端的请求
接收客户端的连接,完成服务端和后端的数据交互,各个worker之间的进程是相互独立的并且平等的,对请求的处理机会是相等的。
当启动nginx时,maste进程启动的时候,会创建好Listener的一个socket监听,然后会fork出多个worker进程(根据配置文件),当有请求来临时,worker进程会通过共享锁来保证在同一时刻只有一个worker进程来处理同一个连接,当worker进程接收到请求的时候,就开始做数据的响应和处理,哪一个进程抢到锁,哪一个进程就会处理请求。
nginx是一个壳,由内核和模块组成,主要是核心、基础、第三方模块。其中,核心模块:http模块,event模块、mail模块。