Nginx配置文件、优化详解
上篇《编译安装nginx》已将nginx安装好,这篇写nginx配置文件和部分优化参数。
查看nginx的配置文件路径,可以使用nginx配置文件检查命令nginx -t:
[root@node4 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok #编译安装后的nginx配置文件路径
3 nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx文档:http://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens
nginx配置文件有4个部分:
main,全局设置,其它部分与该部分设置有关
server,主机服务设置,主要用于指定虚机的主机域名、ip和端口
location,URL匹配的定位,代理定位设置
upstream,上游服务器集群,负载均衡集群配置
这四个部分,server继承main,location继承server;upstream不继承指令也不被继承。
nginx配置文件:
vim /etc/nginx/nginx.conf user nginx nginx; #nginx的用户和用户组,默认为nobody,建议均修改为nginx
worker_processes auto; #nginx进程数,建议按照CPU数目来指定,一般为它的倍数,如2个4核记为8.也可设置为auto,可以和worker_cpu_affinity auto配合使用
#worker_cpu_affinity auto;
worker_rlimit_nofile ; #nginx进程打开的最多文件描述,理论最多能打开能打开ulimit -n ÷ nginx进程数,由于nginx分配请求并不机及其均衡,假设填写10240,当总并发量达到3-4W时进程可能超过10240,因此一般与ulimit -n的数值保持一致, #日志文件设置,错误日志定义类型有debug | info | notice | warn | error | crit
#access_log off;
error_log /var/log/nginx/error.log warn;
#error_log /var/log/nginx/error.log crit;
pid /var/run/nginx.pid; #工作模式与连接数上限
events {
use epoll; #使用epoll的i/o模型参考时间模型use [ kqueue | rtsig | epoll | /dev/poll | select | poll ],nginx针对不同的操作系统有不同的事件模型,标准事件模型包括select和poll,若当前系统不存在更有效的方法,nginx会选择select或poll;高效事件模型包括kqueue和Epoll等
worker_connections ; #每个进程允许的最多连接数。理论上每台nginx的最大连接数为worker_processes × worker_connections
#multi_accept on; #If multi_accept is disabled, a worker process will accept one new connection at a time. Otherwise, a worker process will accept all new connections at a time. The directive is ignored if kqueue connection processing method is used, because it reports the number of new connections waiting to be accepted.如果multi_accept被禁止了,nginx一个工作进程只能同时接受一个新的连接。否则,一个工作进程可以同时接受所有的新连接。如果nginx使用kqueue连接方法,那么这条指令会被忽略,因为这个方法会报告在等待被接受的新连接的数量。
19 } #http服务设定
http {
#文件扩展名和文件爱类型映射表,include是个主模块指令,可以将配置文件拆分并引用,减少配置文件的复杂度。
include /etc/nginx/mime.types;
default_type application/octet-stream; #默认文件类型
server_tokens off; #启用或禁用错误页或者服务响应头部的nginx版本号,格式有on|off|bulit,默认为on
sendfile on; #指定是否使用sendfile系统调用来传输文件。默认为off,sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝。
tcp_nopush on; #启用或禁用freebsd上的tcp_nopush socket选项或linux上的tcp_cork socket选项。这些选项仅在使用sendfile时启用。启用该选项允许在Linux和FreeBSD 4*上,在一个数据包中发送响应头和文件开头。以完整的数据包发送文件。。
tcp_nodelay on; #启用或禁用TCP_nodelay选项的使用。当连接转换为keep alive状态时,将启用该选项。此外,它在ssl连接、无缓冲代理和websocket代理上启用。
#charset UTF-; #字符集 resolver 223.5.5.5 valid=100s; #上游服务器的名称解析为地址解析的名称服务器,参数选项[valid=time] [ipv6=on|off] [status_zone=zone] valid设置DNS缓存失效时间;地址可以指定为域名或IP地址,以及可选端口(1.3.1、1.2.2)。如果未指定端口,则使用端口53。名称服务器以循环方式查询。
resolver_timeout 30s; #超时时间 server_names_hash_bucket_size ; # 哈希表的存储大小,默认取决于处理器 。为了快速处理静态数据集,比如服务器名、map指令的值、mime类型、请求头字符串的名称,nginx使用哈希表。在启动和每次重新配置期间,nginx选择哈希表的最小可能大小,使得存储具有相同哈希值的键的bucket大小不超过配置的参数(hash bucket size)。表的大小用桶表示。调整将继续,直到表大小超过hash max size参数。大多数散列都有相应的指令,允许更改这些参数,例如,对于服务器名称散列,它们是服务器名称散列最大大小和服务器名称散列存储桶大小。hash bucket size参数与处理器缓存线大小的倍数大小对齐。这通过减少内存访问的数量,加快了在现代处理器上哈希中的密钥搜索。如果hash bucket size等于一个处理器的缓存线大小,那么在最坏的情况下,密钥搜索期间的内存访问次数将为两次-首先计算bucket地址,然后在bucket内的密钥搜索期间进行第二次访问。因此,如果nginx发出请求增加hash max size或hash bucket size的消息,那么应该首先增加第一个参数。
client_header_buffer_size 32k; #客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。
large_client_header_buffers 512k;#设置用于读取大客户请求报头的缓冲区的最大数量和大小。请求行不能超过一个缓冲区的大小,否则会将414(请求uri太大)错误返回给客户端。请求头字段也不能超过一个缓冲区的大小,否则400(错误请求)错误将返回给客户端。缓冲区只按需分配。默认情况下,缓冲区大小等于8K字节。如果在请求处理结束后连接转换为保持活动状态,则释放这些缓冲区。
client_max_body_size 300m; #客户端最大上传文件大小
client_body_buffer_size 512k;#客户端缓冲区大小 keepalive_timeout ; #客户端连接保持打开的超时时间,0表示禁用客户端连接, proxy_connect_timeout ; #单位为s,后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_read_timeout ; #连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
proxy_send_timeout ; #后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
proxy_buffer_size 256k;
proxy_buffers 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_max_temp_file_size 600m;
Nginx配置文件、优化详解的更多相关文章
- Nginx服务优化详解
Nginx服务优化详解 1.隐藏Nginx版本信息 编辑主配置文件nginx.conf,在http标签中添加代码 server_tokens off;来隐藏软件版本号. 2.更改Nginx服务启动的默 ...
- Nginx配置项优化详解【转】
(1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor / ...
- MySQL-5.5.32 配置文件优化详解
目录 MySQL-5.5.32 配置文件优化详解 一.配置文件说明 2.my-medium.cnf 3.my-large.cnf 4.my-huge.cnf 5.my-innodb-heavy-4G. ...
- Nginx配置文件中文详解
######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...
- Nginx配置优化详解
如果你已经安装过Nginx并在生产环境中使用,那么Nginx配置优化你一定也要做,这样才能看到Nginx性能,本文就从基本配置优化开始到高层配置教你如何优化Nginx 大多数的Nginx安装指南告诉你 ...
- nginx配置文件参数详解
nginx配置文件主要分为4部分:main(全局设置) main部分设置的指令将影响其他所有设置server(主机设置)server部分的指令主要用于指定主机和端口upstream(负载均衡服务 ...
- Nginx配置项优化详解(转)
(1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor / ...
- Nginx 配置项优化详解
(1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor / ...
- nginx 配置优化详解
# nginx不同于apache服务器,当进行了大量优化设置后会魔术般的明显性能提升效果 # nginx在安装完成后,大部分参数就已经是最优化了,我们需要管理的东西并不多 #user nobody; ...
- nginx配置文件内容详解
events { # 服务器最大链接数 worker_connections 1024; # 设置一个进程是否同时接受多个网络连接,默认为off multi_accept on; #事件驱动模型,se ...
随机推荐
- iptables 常用处理动作
在iptables中,-j 参数用来指定要进行的处理动作,常用的处理动作包括:ACCEPT.REJECT.DROP.REDIRECT.MASQUERADE.LOG.DNAT.SNAT.MIRROR.Q ...
- Spring Security教程之加点密,加点盐(七)
一.概述 一般用数据库保存用户的密码都是经过加密,甚少使用明文.同时,加密方式一般采用不可逆的加密方法,如MD5.也要避免相同的密码在加密后有相同的密文,如admin用户的密码为admin,加密后变成 ...
- [技术博客]微信小程序审核的注意事项及企业版小程序的申请流程
关于小程序审核及企业版小程序申请的一些问题 微信小程序是一个非常方便的平台.由于微信小程序可以通过微信直接进入,不需要下载,且可使用微信账号直接登录,因此具有巨大的流量优势.但是,也正是因为微信流量巨 ...
- 【2019年05月16日】A股最便宜的股票
查看更多A股最便宜的股票:androidinvest.com/CNValueTop/ 经典价值三因子选股: 市盈率PE.市净率PB 和 股息分红率,按照 1:1:1的权重,选择前10大最便宜的股票. ...
- thinkphp的路径问题
无法加载模块?验证码无法显示?__URL__没有替换成当前模块路径?那么你可能遇到了跟我一样的问题.如果你是通过超链接(或者是在地址栏输入该页面的地址)来访问某个页面(即模版)时,如果你在这个页面使用 ...
- web-debug-server
web-debug-server 项目来自:https://github.com/itzg/web-debug-server 这位大哥的镜像做的很有意思:一个很小的web debug服务器,访问它可以 ...
- css元素水平垂直居中
温习一下元素水平垂直居中的几种方法 元素有具体宽度 1.absolute+负边距 .LV_center{ border: 1px solid red; position: absolute; widt ...
- LINUX 下.NET Core 微服务部署实战
前言 最近一直在开发部署.也没有总结一下.从5月份开始出差到现在基本没有发过博客,哎,惭愧. 一直在弄微服务,后续会慢慢更新下面这个系列.欢迎各位大佬交流指点. 分布式理论专题 1..net core ...
- 高亮显示小Demo
public class ItemSearchImpl implements ItemSearchService { /** * 搜索 * * @param paramMap * @return */ ...
- 查看Linux内核版本
您可能因多种原因需要确切知道GNU / Linux操作系统上运行的内核版本. 也许您正在调试与硬件相关的问题,或者了解影响旧内核版本的新安全漏洞,并且您想知道您的内核是否易受攻击. 无论是什么原因,从 ...