文章目录
- nginx特点
- 安装
- 操作
- 使用systemctl管理的操作
- 使用源码包安装的操作
- nginx源码
nginx特点
- 反向代理
- 反向代理服务器需要能处理大量并发连接。Nginx就可以,所以Nginx适合做反向代理服务器
- 负载均衡
- 动静分离
- Nginx实例处理大并发,时候做作为静态服务器,如果有动态请求,可以转发给上游服务器处理
- 静态内容
- 资源:图片,音乐,视频,
- html,JavaScript,css
- 动态内容:各种语言写的服务程序
- 高性能、高并发
- 单机Nginx可以轻松10w连接,如果机器性能还行,10w还远不是瓶颈。
- Nginx使用reactor模式,一个进程可以处理多个请求。这与Apache服务器不同。
- Apache服务器一个进程处理一个请求,所以通常会有几百个工作进程去处理请求,这样进程间切换的开销也会比较大。
- Nginx一个worker进程处理的请求数量取决于内存大小,一般Nginx开启的worker进程数量等于机器CPU的核心数(最好每一个worker进程绑定一个cpu核心,可以使用worker_cpu_affinity参数进行绑核(这个配置仅仅对linux操作系统有效)),这样进程间切换的代价非常小。
- Nginx一个worker进程内部也只有一个线程,所以Nginx使用全异步的方式来处理请求。
- Nginx核心框架非常小巧(1.22.1版本的Nginx核心源码只有7M多点,而uwsgi源码都有6M)。所以Nginx主要功能都由模块来实现
- Nginx也是master进程+worker进程的方式启动
- master进程不会对用户请求提供服务,而是用于提供管理服务,和监控worker进程,当worker进程挂掉,会拉起worker进程(和uwsgi的master进程类似);也为管理员提供命令行服务,如:启动服务、停止服务、重载配置文件等。
- worker进程是真正处理用户请求的进程。
- 热部署
- nginx支持代码热部署(不停机更新二进制文件)、日志重新加载(可以实现日志轮转)、配置热加载。
- 日志重新加载(可以实现日志轮转)、配置热加载很多服务器应该也要支持。
安装
- centos:yum install nginx
- 也可以在官网下载源码tar包去安装
- ./configure && make && make install 即可
操作
使用systemctl管理的操作
- 启动
- sudo systemctl enable nginx
- sudo systemctl start nginx
- 停止
- sudo systemctl stop nginx
- 检查状态
- sudo systemctl status nginx
使用源码包安装的操作
- 启动
- ./nginx
- 更改配置重启nginx
- ./nginx -s reload
- 关闭
- ./nginx -s stop
- 判断配置文件是否正确
- nginx -t -c /usr/local/nginx/conf/nginx.conf
- 或者./nginx -t
nginx源码
nginx-1.22.1版本有198427行c代码(包含头文件)。约20w代码了。
- 参考:理解nginx源码