给网站设置关键词重庆建网站一般多少钱
摘要:本文深入剖析Nginx的安装目录,涵盖conf、html、logs、sbin等关键目录及其文件功能,详述Nginx进程管理与启停操作,聚焦nginx.conf配置文件的全局、events、http等核心模块,助力读者全面掌握Nginx架构。
Nginx 目录结构分析
在使用 Nginx 前,我们先对其安装目录的文件结构进行分析。可以通过tree
工具查看文件目录结构,安装方式为yum install -y tree
,执行tree /usr/local/nginx
(Nginx 安装目录)即可查看。
conf 目录
Nginx 所有配置文件存放的目录,包含以下关键文件:
CGI 相关配置:CGI(通用网关接口)是一种标准规范,用于解决客户端请求与服务端程序处理的交互问题。相关文件包括:
文件 | 内容 |
fastcgi.conf | fastcgi 相关配置文件 |
fastcgi.conf.default | fastcgi.conf 的备份文件 |
fastcgi_params | fastcgi 的参数文件 |
fastcgi_params.default | fastcgi 的参数备份文件 |
scgi_params | scgi 的参数文件 |
scgi_params.default | scgi 的参数备份文件 |
uwsgi_params | uwsgi 的参数文件 |
uwsgi_params.default | uwsgi 的参数备份文件 |
MIME 类型配置:
文件 | 内容 |
mime.types | 记录 HTTP 协议中Content-Type 值与文件后缀名的对应关系 |
mime.types.default | mime.types 的备份文件 |
核心配置文件:
文件 | 内容 |
nginx.conf | Nginx 的核心配置文件,是学习的重点 |
nginx.conf.default | nginx.conf 的备份文件 |
编码转换配置:
koi-utf
、koi-win
、win-utf
:这三个文件与编码转换映射相关,用于将一种编码转换为另一种编码
html 目录
存放 Nginx 自带的两个静态 HTML 页面:
文件 | 内容 |
50x.html | 访问失败后的错误页面 |
index.html | 成功访问时的默认首页 |
logs 目录
记录日志的文件目录,Nginx 服务器启动后,会生成以下三个文件:
文件 | 内容 |
access.log | 访问日志 |
error.log | 错误日志 |
nginx.pid | 记录 Nginx 进程 ID 的文件 |
sbin 目录
存放执行程序文件nginx
,该文件用于控制 Nginx 的启动、停止等相关操作。
Nginx 服务器启停命令
Nginx 的启停在 Linux 系统中有多种方式,以下介绍两种常用方式:
方式一:Nginx 服务的信号控制
Nginx 的进程模型
Nginx 默认采用多进程方式工作,启动后通过
ps -ef | grep nginx
命令可查看进程信息,包含一个master
进程和多个worker
进程:
master
进程:主要用于管理worker
进程,包括接收外界信号并发送给各个worker
进程,监控worker
进程状态,当worker
进程异常退出后自动重启新的worker
进程。
worker
进程:专门用于处理用户请求,各个worker
进程之间平等独立,处理请求的机会均等。
信号控制的前提
获取 master 进程的 PID:
方式一:通过
ps -ef | grep nginx
命令查看方式二:查看
/usr/local/nginx/logs/nginx.pid
文件(可通过./configure
的--pid-path=PATH
指定)
常用信号及作用:
信号 | 作用 |
---|---|
TERM/INT | 立即关闭整个服务 |
QUIT | “优雅” 地关闭整个服务 |
HUP | 重读配置文件并使新配置生效 |
USR1 | 重新打开日志文件,可用于日志切割 |
USR2 | 平滑升级到最新版的 Nginx |
WINCH | 所有子进程不再接收新连接,相当于给worker 进程发送QUIT 指令 |
信号控制命令
调用格式为kill -signal PID
(signal
为信号,PID
为master
进程 ID),示例如下:
方式二:Nginx 的命令行控制
通过 Nginx 目录下sbin
中的可执行文件nginx
进行控制,可通过nginx -h
查看参数,常用参数如下:
-?
和-h
:显示帮助信息
-v
:打印版本号信息并退出
-V
:打印版本号信息和配置信息并退出
-t
:测试 Nginx 配置文件语法是否正确并退出
-T
:测试 Nginx 配置文件语法是否正确,列出用到的配置文件信息后退出
-q
:在配置测试期间禁止显示非错误消息
-s signal
:发送信号,signal
可取值:
stop
:快速关闭,类似TERM/INT
信号的作用quit
:优雅关闭,类似QUIT
信号的作用reopen
:重新打开日志文件,类似USR1
信号的作用reload
:类似HUP
信号的作用
-p prefix
:指定 Nginx 的前缀路径(默认为/usr/local/nginx/
)
-c filename
:指定 Nginx 的配置文件路径(默认为conf/nginx.conf
)
-g
:补充 Nginx 配置文件,指定启动时应用的全局配置
Nginx 核心配置文件结构
Nginx 的核心配置文件默认位于/usr/local/nginx/conf/nginx.conf
,删除注释后,基本结构如下
worker_processes 1;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;server_name localhost;location / {root html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
}
配置文件结构说明
全局块:设置 Nginx 服务器整体运行的配置指令,格式为指令名 指令值
events 块:设置 Nginx 服务器与用户的网络连接,对性能影响较大,格式:
events {指令名 指令值;
}
http 块:Nginx 配置中的重要部分,包含代理、缓存、日志记录、第三方模块等配置,格式:
http {指令名 指令值;server { # server块,与虚拟主机相关指令名 指令值;location / { # location块,处理特定请求指令名 指令值;}}...
}
小结:nginx.conf
默认包含三大块(全局块、events 块、http 块),http 块中可配置多个 server 块,每个 server 块又可配置多个 location 块。
全局块指令
user 指令:配置运行 Nginx 的worker
进程的用户和用户组
语法 | user user [group] |
---|---|
默认值 | nobody |
位置 | 全局块 |
说明:也可在编译时通过 ./configure --user=user --group=group
指定,配置文件中的设置优先级更高。使用时需先创建对应用户(如useradd www
),并确保该用户对相关目录有访问权限。
master_process 指令:指定是否开启工作进程
语法 | master_process on|off; |
---|---|
默认值 | master_process on; |
位置 | 全局块 |
worker_processes 指令:配置 Nginx 生成工作进程的数量,是实现并发处理的关键
语法 | worker_processes num/auto; |
---|---|
默认值 | 1 |
位置 | 全局块 |
说明:理论上值越大支持的并发量越多,但受服务器限制,建议与 CPU 内核数一致。
其他指令:
daemon
:设定 Nginx 是否以守护进程方式启动,语法daemon on|off;
,默认on
,位置全局块pid
:配置master
进程 ID 存储的文件路径,语法pid file;
,默认/usr/local/nginx/logs/nginx.pid
,位置全局块,可通过./configure --pid-path=PATH
指定error_log
:配置错误日志存放路径及级别,语法error_log file [日志级别];
,默认error_log logs/error.log error;
,位置全局块、http、server、location,可通过./configure --error-log-path=PATH
指定。日志级别包括debug|info|notice|warn|error|crit|alert|emerg
,建议不设置低于info
的级别,避免过多磁盘 I/O 消耗include
:引入其他配置文件,使配置更灵活,语法include file;
,位置任意
events 块指令
accept_mutex 指令:设置网络连接序列化,解决 “惊群” 问题
语法 | accept_mutex on|off; |
---|---|
默认值 | accept_mutex on; |
位置 | events |
multi_accept 指令:设置是否允许同时接收多个网络连接
语法 | multi_accept on|off; |
---|---|
默认值 | multi_accept off; |
位置 | events |
说明:关闭时,一个worker
进程只能同时接受一个新连接;开启时,可同时接受所有新连接。
worker_connections 指令:配置单个worker
进程的最大连接数
语法 | worker_connections number; |
---|---|
默认值 | worker_commections 512; |
位置 | events |
说明:连接数包括所有可能的连接,且不能超过操作系统支持的最大文件句柄数。
use 指令:设置 Nginx 处理网络消息的事件驱动模型
语法 | use method; |
---|---|
默认值 | 根据操作系统定 |
位置 | events |
说明:method
可选值有select/poll/epoll/kqueue
等,Linux 内核 2.6 以上推荐使用epoll
,可在编译时通过--with-select_module
等参数设置是否编译对应模块。
events 指令配置实例
events {accept_mutex on;multi_accept on;worker_connections 1024;use epoll;
}
配置后可通过./nginx -t
测试语法,./nginx -s reload
重新加载。
http 块指令
定义 MIME-Type:浏览器通过 MIME Type 区分资源类型,Nginx 需识别这些类型,默认配置:
include mime.types;
default_type application/octet-stream;
default_type
:配置默认 MIME 类型,语法default_type mime-type;
,默认text/plain
,位置 http、server、location。
location /get_text {default_type text/html;return 200 "This is nginx's text";
}
location /get_json {default_type application/json;return 200 '{"name":"TOM","age":18}';
}
自定义服务日志:
access_log
:设置用户访问日志属性,语法access_log path[format[buffer=size]]
,默认access_log logs/access.log combined;
,位置 http、server、locationlog_format
:指定日志输出格式,语法log_format name [escape=default|json|none] string....;
,默认log_format combined "...";
,位置 http
其他配置指令:
sendfile
:设置是否使用sendfile()
传输文件,可提高静态资源处理性能,语法sendfile on|off;
,默认off
,位置 http、server、locationkeepalive_timeout
:设置长连接超时时间,语法keepalive_timeout time;
,默认75s
,位置 http、server、location。长连接可避免多次创建连接,提升效率,但需合理设置超时时间keepalive_requests
:设置一个长连接的使用次数,语法keepalive_requests number;
,默认100
,位置 http、server、location
server 块和 location 块
server
块用于配置虚拟主机相关内容,location
块基于请求字符串与location
后的值匹配,处理特定请求。Nginx 默认配置示例:
server {listen 80;server_name localhost;location / {root html;index index.html index.htm;}error_page 500 502 503 504 404 /50x.html;location = /50x.html {root html;}
}
server
块和location
块是 Nginx 功能配置的重点,后续会在静态资源部署部分详细说明。通过修改html
目录下的文件可更改页面内容,若需丰富 Nginx 功能,需深入学习核心配置文件。