highlight: a11y-dark
一、简介
什么是nginx?
Nginx是一款自由的、开源的、高性能的HTTP服务器和 反向代理 服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。
- Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接
- 高度的模块化和自由软件许可证使得第三方模块层出不穷(开源)
- Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris,AIX,Mac OS等操作系统上
- 稳定性极高
- nginx解决高并发
nginx解决高并发:
nginx利用多进程+epoll实现高并发,在启动后,会有一个master进程和多个相互独立的worker进程。每个子进程只有一个线程,采用IO的多路复用米星epoll,实现高并发
nginx其他优点:
nginx相比其他web服务器,量级更轻。抗并发,处理请求是异步非阻塞的。编写的模块简单,社区活跃。
二、nginx安装
请参考:https://editor.csdn.net/md/?articleId=126915323
三、nginx配置文件详解
nginx配置文件主要分为三个部分:全局块、events块、http块
- 全局块:从配置文件开始到events块之间的内容,主要设置一些影响nginx的服务器整体运行的配置,包,括配置运行nginx服务器的用户(组)、运行生成worker procss数,进程pid存放路径、日志存放路径和类型以及配置文件的引入等。
- events块:events块主要影响nginx服务器与用户的网络连接。比如 worker connections 1024;表示nginx支持的最大连接数。
- http块:是nginx配置最频繁的部分,代理、缓存和日志定义等绝大部分功能和第三方模块配置都在这里。http块也分为http全局块和server块。http块下面又包含了http全局块和server块。server基本是配置最频繁的地方。
结构图:
... #全局块
events {
#events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
详解详情:
#定义Nginx运行的用户和用户组
user www www;
#
#nginx进程数,建议设置为等于CPU总核心数.
worker_processes 8;
#
#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx/error.log info;
#
#进程文件
pid /var/run/nginx.pid;
#
#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致.
worker_rlimit_nofile 65535;
#
#工作模式与连接数上限
events
{
#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型.
use epoll;
#单个进程最大连接数(最大连接数=连接数*进程数)
worker_connections 1024; #最大连接数,默认为512
}
#
#设定http服务器
http
{
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型
#charset utf-8; #默认编码
server_names_hash_bucket_size 128; #服务器名字的hash表大小
client_header_buffer_size 32k; #上传文件大小限制
large_client_header_buffers 4 64