从这篇博客开始,将对Nginx的配置文件nginx.conf的常用配置做详细的解释,并且以附件的形式给出实际的配置文件内容。
user nick excelsoft;
说明:以root账号运行时,设置worker进程所属的用户/组。
worker_processes 2;
说明:设置worker进程的数目,一般和CPU内核数一致,可设置为其2倍,以优化性能。
其他:
查看CPU内核数:cat /proc/cpuinfo | grep processor
如果为双核,则显示:
processor : 0
processor : 1
error_log /opt/nginx/logs/error.log notice;
说明:指定错误日志的路径、级别,所有的级别包括debug、info、notice、warn、error、crit
pid /opt/nginx/logs/nginx.pid;
说明:指定nginx启动时的进程文件。
其他:
1. nginx启动时,获取该文件的写权限,将当前进程(master process)的pid写入到nginx.pid文件。
2. 一旦nginx启动,该文件即成为可读的,无法再次写入,可以避免nginx的重复启动。
3. nginx.pid的文件内容是当前进程的pid,因此可以这样关闭:
kill `cat /opt/nginx/logs/nginx.pid`
不需要查看nginx的进程号:ps -ef | grep nginx
worker_rlimit_nofile 65535;
说明:设置一个nginx进程能够打开的最大文件数。
其他:
1. 默认情况下,nginx进程能够打开的文件数受限于当前的操作系统。
2. 查看系统的最大文件数:当前的CentOS为1024。
ulimit -a
ulimit -n
events { use epoll; worker_connections 65535; }
说明:
1. 设置网络IO模型:
epoll:在Linux内核2.6以上版本可用,查看Linux版本:cat /proc/version
和标准的select模式比较,处理时间更短,采用了类似于数据库的索引机制,以空间换时间.
kqueue:适用于FreeBSD系统。
2. worker_connections:单个worker进程允许的最大并发连接数。
理论上,每台nginx服务器的最大连接数为worker_processes * worker_connections,
但是nginx进行调度时,分配用户请求给worker进程并不均匀,无法达到最大值。
charset utf-8;
说明:http作用域,设置编码格式,可不统一设置。
log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" ' '"$sent_http_content_type" "$request_time"';
说明:http作用域.
1. 该日志格式定义为access名称。
2. 日志格式:原有选项
$remote_addr:客户端IP地址,如果使用nginx进行了反向代理,获取的是nginx服务器的地址。
$remote_user:客户端用户名。
$time_local:客户端进行访问时的本地时间。 [21/Jun/2014:23:35:19 +0800]
$request:请求方式、路径、协议。 [GET /html/ HTTP/1.1]
$status:请求状态码,成功为200。
$body_bytes_sent:发送给客户端的文件主体大小。 [49]
$http_referer:记录从哪个页面链接过来的。
$http_user_agent:客户端浏览器。
$http_x_forwarded_for:使用反向代理后,真实的客户端IP地址。
3. 日志格式:追加选项
$sent_http_content_type:响应的内容类型。 [text/html; charset=utf-8]
$request_time:处理用户请求的时间,包括接收请求、返回响应的时间。 [0.000]
access_log /opt/nginx/logs/access.log access;
说明:http作用域,指定日志文件的位置。
sendfile on;
说明:http作用域,是否开启linux系统的零拷贝(zero copy)功能,针对普通的应用设为on。
针对下载(或者大量图片显示)等涉及大量磁盘IO的操作设为off,可以有效减少数据拷贝。
tcp_nopush on;
说明:http作用域,默认为off,将小的数据包组装发送,避免大量数据包导致的网络拥塞。
tcp_nodelay on;
说明:http作用域,设置响应无延迟,默认为on. 高版本的Linux系统允许和tcp_nopush同时使用。
keepalive_timeout 65;
说明:http作用域,设置连接超时时间为65s
1. 如果有大量图片显示、大文件上传等,设置地调整为一个较大值。
2. 不能设置的太大,避免恶意的连接占用。
gzip on;
说明:http作用域,开启gzip压缩功能。
1. 在服务端对响应内容进行压缩,客户端的浏览器具有gzip解压缩能力。
2. 压缩比率高达30%以上,有效节省传输带宽。
gzip_min_length 1k;
说明:页面内容大于1k时才进行压缩,避免内容过少导致的越压越大现象。
gzip_buffers 8 32k;
说明:压缩时需要的缓冲区大小,避免大文件的丢失. 一共8块、每块32k。
gzip_http_version 1.1;
说明:默认为HTTP/1.1协议,早期的浏览器可能不支持gzip功能。
gzip_comp_level 3;
说明:设置压缩比率,范围为1-9,不宜设置的过大、以避免影响了CPU的性能。
gzip_types text/plain text/css text/javascript application/x-javascript application/xml;
说明:进行压缩的文件类型
1. gzip默认会对text/html进行压缩,因此不用指定。
2. 关于js:传统的标准类型为text/javascript,但js终究不是纯文本文件,
推荐使用application/javascript, 但事实上,application/javascript并没有很好的支持,
实际使用application/x-javascript,x前缀表示experimental。
gzip_vary on;
说明:根据http响应头判断浏览器是否支持gzip压缩,不支持即不压缩。
使用火狐查看:
响应头:Vary: Accept-Encoding
请求头:Accept-Encoding gzip, deflate
server_names_hash_bucket_size 128;
说明:后端服务器名字的哈希存储大小,如果服务器很多,可以适当调大一点。
client_header_buffer_size 32k;
说明:说明:nginx默认使用该大小的buffer来读取header值。
large_client_header_buffers 4 32k;
说明:如果header过大,使用该buffer来读取header。
client_max_body_size 100m;
说明:客户端能够上传的最大文件大小。
client_body_buffer_size 128k;
说明:处理客户端请求(通过POST发送的数据、文件上传)的buffer大小,
如果超过此大小限制,则全部或部分存储到一个临时文件。
启动、关闭:su - root
检查配置文件是否修改正确:
/usr/local/nginx/sbin/nginx -t
平滑启动:
kill -HUP `cat /opt/nginx/logs/nginx.pid`
相关推荐
总之,《深入理解nginx模块开发与架构解析(第二版)》是一本深入浅出的Nginx技术专著,无论你是初学者还是经验丰富的开发者,都能从中获益,提升自己的Nginx技能。配合书中的高清PDF文档,你可以更直观地学习和查阅...
本书通过丰富的案例分析,深入浅出地介绍了Nginx的各种模块,旨在提升读者在实际工作中的配置和优化能力。 Nginx是一款高性能的HTTP和反向代理服务器,广泛应用于网站的负载均衡、静态文件处理、SSL终止等场景。其...
代理zh的Nginx教程不仅是一系列技术文档,更是深入浅出的技术宝典,旨在帮助Nginx用户提升技能,无论是新手还是经验丰富的系统管理员都能从中获益匪浅。通过这些教程的学习,可以掌握Nginx的高级特性,从而更好地...
《第7章 Nginx的Rewrite规则与实例》深入浅出地讲解了Nginx的URL重写功能。通过学习,用户可以理解正则表达式在Nginx中的应用,掌握如何制定和调试Rewrite规则,实现URL美化、路径重定向等功能。 《第11章 Nginx的...
Nginx是目前广泛使用的高性能HTTP和反向代理服务器,它同时也是一个IMAP/POP3/SMTP代理服务器。...整体而言,这份技术指南对Nginx的应用技术作了深入浅出的介绍和详细的实例演示,是学习Nginx的一个不可多得的资源。
2. **配置文件解析**:书中详细介绍了Nginx的配置文件结构,包括指令、块级结构、变量使用等,帮助读者编写出符合需求的配置文件。 3. **HTTP服务器设置**:讲解如何配置Nginx作为静态资源服务器,支持HTTP/HTTPS...
《Nginx从入门到精通》是一本深入浅出、全面介绍Nginx服务器的教程。Nginx是一款高性能的HTTP和反向代理服务器,也是邮件传输代理服务器,以其轻量级、高并发处理能力而备受青睐。这本书旨在帮助读者快速掌握Nginx的...
对于Linux基础的读者来说,本文档将深入浅出地介绍Nginx的安装、配置、管理以及调优。文档共分为10章,涵盖了Nginx的方方面面,包括Nginx简介、安装与启动、基本配置、Rewrite规则,以及源代码搭建LNMP环境。 文档...
通过对负载均衡、内容缓存、Web服务器安全控制及监控管理等方面进行深入浅出的讲解,本书为读者提供了丰富的实践经验和技巧。无论是对于新手还是经验丰富的开发者而言,这本书都具有极高的参考价值。
综上所述,《Nginx如何取代Apache》这本书深入浅出地介绍了如何利用Nginx的强大功能,替换Apache来提升Web服务器的性能和稳定性。通过理解两者的工作原理、核心特性,以及迁移和配置的步骤,读者可以成功地将网站从...
在"实战Nginx:取代Apache的高性能Web服务器"中,作者张宴深入浅出地讲解了如何利用Nginx进行网站部署和优化。下面我们将围绕Nginx的核心特性、配置、反向代理、负载均衡以及与Linux系统的整合等关键知识点展开详细...
《实战Nginx:取代Apache的高性能Web服务器》这本书提供了深入浅出的讲解,帮助读者理解Nginx的工作原理以及如何将其应用于实际项目中。无论是对于初学者还是有一定经验的技术人员来说,都是一本不可多得的好书。...
本文将深入浅出地讲解Nginx请求限制和访问控制的实现方法,主要包括对Nginx请求频率和连接频率的限制,以及基于IP和基于用户登录认证的访问控制。 一、Nginx的请求限制 1. HTTP协议的连接与请求 HTTP请求建立在...
在本文中,我们将深入浅出地探讨Nginx的安装、基础使用和配置,旨在帮助新手快速入门。 首先,我们来看Nginx的安装。对于Windows用户,可以直接从Nginx官方网站下载预编译的二进制包进行安装。而对于Linux用户,...
本课程通过四个视频模块,深入浅出地讲解了Linux服务器的基础知识和实践操作技能。 首先,视频可能从Linux基础入手,包括Linux的安装、常用命令行操作、文件系统管理等基础知识。这些内容对于理解和操作Linux服务器...
【Nginx简介】 Nginx(发音为 "engine-x")是一款高性能...教程会深入浅出地讲解每个知识点,确保即使是没有经验的新手也能轻松上手。在实践中不断探索和学习,你将能够灵活运用Nginx来构建高效、稳定的Web服务环境。