"这篇文章主要介绍了如何使用Nginx搭建轻量级Web服务器,Nginx以其高效的并发处理能力,支持PHP和JSP,以及内置的群集模块,成为搭建强大Web集群系统的首选。" 在搭建Nginx轻量级Web服务器的过程中,我们需要关注以下几个关键知识点: 1. **Nginx介绍**:Nginx是一款高性能、轻量级的Web服务器/反向代理服务器,它的特点是并发处理能力强,可处理超过6万以上的并发连接,同时支持静态文件、HTTP代理、邮件服务器等功能。 2. **配置文件结构**:Nginx的配置文件通常包含多个部分,如`events`和`http`。`events`配置块定义了Nginx处理网络事件的方式,而`http`配置块包含了全局的HTTP服务器设置和多个server块,用于处理不同域名或端口的请求。 3. **worker_processes**:这是Nginx工作进程的数量,可以根据服务器的CPU核心数进行设置。例如,如果服务器有4个核心,通常设置为4,以充分利用硬件资源。 4. **worker_connections**:每个工作进程能够同时处理的最大连接数,这是一个非常重要的参数。在Linux系统中,需要配合`ulimit -n`命令调整系统最大打开文件数限制,以确保能支持设置的worker_connections数量。 5. **events模块**:Nginx默认使用epoll事件模型,epoll是Linux内核提供的高效率I/O事件通知机制,适合处理大量并发连接。 6. **http模块**:在此模块中,可以配置日志、MIME类型、客户端请求体大小限制、请求头缓冲等。例如,`client_max_body_size`用于限制上传文件的最大大小,`client_header_buffer_size`和`large_client_header_buffers`用于设置接收客户端请求头的缓冲区大小。 7. **性能优化设置**: - `sendfile on`:开启sendfile功能,提高文件传输效率。 - `tcp_nopush on`和`tcp_nodelay on`:分别控制TCP的延迟发送和立即发送策略,优化网络传输性能。 - `keepalive_timeout`:设置TCP连接的空闲时间,允许复用已建立的连接,减少握手开销。 8. **安全与日志**:配置错误日志和访问日志,例如`error_log`和`access_log`,以及设置客户端请求超时时间`client_header_timeout`,这些都是管理和监控服务器状态的重要手段。 通过以上设置,我们可以根据具体需求调整Nginx配置,搭建出一个高效、稳定的轻量级Web服务器,同时具备扩展性,能够通过群集模块构建大型Web服务集群。
//:为注释。
[]:为可选或者可添加项。
#user nobody;
worker_processes 1; //指定Nginx要开启的进程数。每个Nginx进程平均耗费10M-12M内存。建议和CPU数量一致
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; //进程ID文件位置
events { nb
[ use epoll] //工作模式选择Nginx支持的工作模式有 select、poll、kqueue、epoll、rtsig、/dev/pool 其中select 和 poll 是标准模式。高效模式为 epoll 和kqueue 不同的是 epoll是在LINUX平台上运行 但Kqueue是在BSD系统中运行 当然在linux下使用 epoll是首选啦!
worker_connections 65536; //设置Nginx的工作模式及连接数上限 连接数是又 worker_connections X worker_processes = 65536 * 4 使用 这么高的连接数要设置文件的最大开始限制为65536才可以实现 所以使用命令 'ulimit -n 65536'
}
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"';
[ client_max_body_size 20m;] //设置允许客户端请求的最大单个文件字节数
[ client_header_buffer_size 32k;] //指定来自客户端请求的后文件的cookie缓存值 这里设置为32K
[ large_client_header_buffers 4 128k] //指定客户机请求中较大的消息头的缓存最大数量 4 为数量 128k 为大小 ,这里最大缓存为 4个 128k;
sendfile on; //开启高效文件传输模式。将tcp_nopush和tcp_nodely两个为 on ,用于防止网络堵塞。
[ tcp_nodely on;]
#tcp_nopush on;
#keepalive_timeout 0; //用于设置客户端连接保持活动的超时时间。超过该时间服务器自动关闭连接。
keepalive_timeout 65;
[ client_header_timeout] //用于设置客户端请求头读取超时时间。
[ client_body_timeout] //用于设置客户端请求主体读取时间超时值
[ send_timeout ] // 用于指定响应客户端的超时时间。
#gzip on; //开启gzip模块,现在表示开启gzip压缩,实时压缩输出数据流。
[ gzip_min_length ] //设置允许压缩的页面最小字节数,页面字节数从header头的content_length中获取。默认为0 ,全部都压缩。
[ gzip_buffers 4 16k] //表示申请4个单位为16K的内存作为压缩结果的流缓存,默认为与原始数据大小相同的内存空间来存储gzip压缩结果。
[ gzip_http_version ] //用户设置识别http协议版本,默认是1.1,大部分浏览器已经支持gzip压缩 所以可以默认。
[ gzip_comp_level ] //指定gzip压缩比,1为最小,速度快;9为最高压缩,传输速度快,CPU压力山大喔! 自己选择情况而定!
[ gzip_types ] //用来指定压缩的类型,无论是否指定 'text/html' 类总会压缩
[ gzip_vary on ;] //可以让前端的缓存服务器缓存经过的gzip压缩页面
[(负载均衡)
upstream ixdba.net{
ip_hash; //为调度方式 默认为每一个都逐一分配 weight 指定 优先级 weight值 越高越优先 . ip_hash 每个请求按访问IP的hash结果来分配,一个ip固定 后端一台服务器 有效解决session 共享问题。 fair 这个比上面两个更加智能,可以依赖页面大小和加载时间长短优先的分配 nginx本新不支持该功能可以下载nginx的upstream_fair 模块 url_hash 按照url的hash结果分配,使每一个url定向到同一个后端服务器,可以进一步提高后端服务器的效率。nginx 所要安装 NGINX 的 hash 软件包 来支持该模块 那么我们应该使用 ip_hash 是最好的!
server 192.168.1.1:80 //指定后端服务器地址和端口
server 192.168.1.2:80 down // down指该服务器不参与群集
剩余5页未读,继续阅读
- 粉丝: 138
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦