Nginx 核心配置文件:nginx.conf。
user 用来配置 worker 进程运行用户。
worker_processes 是配置工程进程数目。
worker_processes 的取值是根据硬件来进行配置。该值一般是和 CPU 数量一致或者是 CPU 数量的2倍。
配置全局错误日志文件以及日志级别。(默认日志级别为 error)
日志级别有很多种:[debug, info, notice, warn, error, crit, alert, emerg]。
从 debug、info、...... 一直到 emerg,错误严重性是越来越严重。debug 输出日志是最多、最全的,而 error 相比 debug 少很多很多。
配置存储 pid 进程的文件。
events 是 nginx 和用户交互网络连接优化的配置。
完整配置如下
- events{
- accept_mutex on;
- multi_accept on;
- worker_connections 1024;
- use [kqueue | rtsig | epoll | /dev/poll | select | poll | eventport];
- }
“惊群效应”
简单来说就是多个进程或者线程在等待同一个事件,当事件发生时,所有线程和进程都会被内核唤醒。唤醒后通常只有一个进程获得了该事件并进行处理,其他进程发现获取事件失败后又继续进入了等待状态,在一定程度上降低了系统性能。
Nginx 后台是以多进程的工作模式,当一个进程进入后,会有多个 worker 进程会被同时唤醒,但是最终只会有一个进程可以获取到连接。如果每次唤醒的进程数目太多,就会影响 Nginx 的整体性能。如果将 accept_mutex 的值设置为 on,Nginx 会对多个进程接收连接进行序列号,一个个来唤醒接收,就防止了多个进程对连接的争抢。
说明:http 配置不止下面这些,后面我们还会接触很多。
- 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;
- tcp_nopush on;
- keepalive_timeout 65;
- gzip on;
- }
设定 mime 类型,类型在 mime.type 文件中进行定义。
默认文件类型。
日志格式设置。
记录访问信息。
开启文件传输。
开启防止网络阻塞模式。
长连接超时时间,单位为秒。
开启 gzip 压缩传送。
引入子配置文件。如果我们一个 nginx 存在多个 server,我们可以将他们拆分开来,然后通过 include 引入到 nginx.conf 中。
说明:server 配置和 http 一样,不止下面这些,后面我们也会去说。
server 配置是在 http 配置下,一个 http 可以有多个 server 配置。
- server {
- listen 80;
- server_name localhost;
- charset koi8-r;
- access_log logs/host.access.log main;
-
- location / {
- root html;
- index index.html index.htm;
- }
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root html;
- }
-
- location ~ \.php$ {
- proxy_pass http://127.0.0.1;
- }
- }
监听端口。
服务名称,这里一般用的是域名,没有域名就用 ip。
配置字符集。
配置当前服务的日志。
匹配请求,/是根路径请求,会被该location匹配到并且处理。
location 下面还可以进行配置
- location / {
- root /usr/share/nginx/html; # root是配置服务器的默认网关根目录位置
- index index.html index.htm; # 配置首页文件的名称
- }
- location / {
- proxy_pass http://127.0.0.1;
- }
以上配置可以说只展示了 Nginx 的冰山一角,后面我们还会去接触更多的指令。这里推荐大家有问题可以参考 Nginx 官网的 documentation 文档进行学习。
这一讲就讲到这里,有问题可以联系我:QQ 2100363119。