深入Nginx之《常用参数配置技巧》

常见参配置实战技巧

下面会讲解实战中应该怎么配置更为合理。



1.user

默认是nobody,如果使用nobody,Nginx在运行过程中会出现很多操作没有权限,比如写硬盘。一般都是用低于root级别的用户,比如www,并且可以在linux下设置www禁止ssh登录服务器,提高安全性;

2.worker_processes

代表Nginx worker的进程数,一般情况下建议和机器的核数相同,也可以配置 worker_processes auto ; (Nginx1.2.5版本添加的) 自动根据cpu核数进行进程启动;

但是实际应用中,服务器不一定只跑了Nginx,需要考虑机器资源会被分配到哪些服务上,避免进程启动过多,和其他服务竞争cpu,导致过多上下文切换;

3.worker_cpu_affinity auto

Nginx 1.9.10添加的功能,表示可以根据服务器的核数自动配cpu亲缘性,提升Nginx的性能;

4、error_log & access_log

关于日志记录的,error_log 配置为error级别, 减少不必要的日志记录, 如果是测试环境可以开启info级别。日志记录需要考虑硬盘的独立性,不要使用linux的根分区,避免大量的io影响Linux服务器吞吐能力。单独挂载一个磁盘,独立使用io;

另外硬盘的使用寿命需要注意,关注message的日志,定期检查硬盘(Nginx记录日志是异步处理,并且不会因为硬盘的问题,导致请求异常,但是会影响日志的记录) ;

5.worker_priority

配置Nginx在linux服务器上资源使用的优先级,作为反向代理服务,应该拥有极高的优先级,建议配置到-10;

6.gzip_comp_level

压缩等级,等级最高为9,等级越高压缩后的文件越小,但是消耗的cpu也会更多,经过测试,压缩等级7 和 9 的文件大小相比,其实只有细微的差别,用5-7的等级足矣;

7.upstream块

配置上游服务器,可以结合 proxy_next_upstream 等指令做大量的优化,我会在下面的章节单独说明;

8.error_page

错误重定向,可以捕获上游服务器错误的状态码后,将请求重定向到其它地方,比如提供友好页面,关于error_page的更强大的使用方式。

9.location & root

通过root路径可以读取静态文件,在1.7.11以前的版本,Nginx读取硬盘的文件,都是阻塞型操作,后面引入了线程池,使得读取硬盘提供了非阻塞的操作,极大的提升了硬盘的io,也提升了proxy_cache的能力。

Nginx的常见配置在使用中都有着不同的变化,那么对于更为复杂的配置来说,其配置就显得更为精妙了,所以熟悉Nginx的官方wiki是发挥它巨大作用的基础。

常见配置注解



user  www www;

#定义Nginx运行的用户和用户组

worker_processes  2;

#Nginx进程数

worker_cpu_affinity auto;

  #配置Nginx进程cpu亲源性

error_log  /var/log/error_log  info;

 #全局错误日志定义类型 ,默认是error

worker_rlimit_nofile 65535;

 #一个Nginx进程打开的最多文件描述符数量

pid /var/run/nginx.pid;

 #进程文件

worker_priority -10;

  #linnx系统下的资源使用的优先级

worker_rlimit_nofile  65535;

 #worker进程的最大打开文件数限制

worker_shutdown_timeout  30;

   #30s内Nginx无法平滑退出,就强行关闭进程

events {

worker_connections  10000;

  #单个进程最大连接数(整个Nginx最大连接数=连接数*进程数)

use epoll;

#epoll linux2.6+内核高性能的网络io, 如果跑在FreeBSD上面,就用kqueue模型。

}

http {

include       conf/mime.types;

  #文件扩展名与文件类型映射表

default_type  application/octet-stream;

 #默认文件类型

log_format main     ‘$remote_addr - $remote_user [$time_local] ‘

‘"$request" $status $bytes_sent ‘

‘"$http_referer" "$http_user_agent" ‘

‘"$http_cookie"‘;

#定义日志格式

client_header_buffer_size    1k;

    #设置用户请求头所使用的buffer大小

large_client_header_buffers  4 4k;

  #当默认的缓冲不够用时就会使用此参数。

server_names_hash_bucket_size 128;

 #服务器名字的hash表大小

client_header_buffer_size 32k;

 #上传文件大小限制

gzip on;

  #开启gzip

gzip _comp_level 6;

    #压缩等级

gzip _min_length  1100;

   #设置允许压缩的页面最小字节数

gzip _buffers     4 8k;

   #设置系统获取几个单位的缓存用于存储gzIP的压缩结果数据流。4 8k 代表以8k为单位,按照原始数据大小以8k为单位的4倍申请内存。

gzip _types       text/plain text/css;

  #匹配MIME类型进行压缩

output_buffers   2 32k;

    #设置用于从磁盘读取响应的缓冲区的数量和大小。 此设置为:按照原始数据大小以32K为单位的2倍大小申请内存空间。

sendfile         on;

    #启用sendfile()函数

tcp_nopush       on;

    #防止网络阻塞,需要sendfile开启

tcp_nodelay      on;

  #防止网络阻塞,需要sendfile开启

keepalive_timeout 90s;

   #长连接超时时间,单位是秒

upstream backend {

server 192.168.1.12:8081 weight=3;

server 192.168.1.13:8081 weight=2;

}

    #upstream块,weight是权重,权重越高,请求的比例越高。 

server {

listen       80;

         #http监听端口

server_name  your.example.com;

  #域名

access_log   /var/log/nginx.access_log  main;

 #访问日志记录

charset  koi8-r;

#默认编码

location / {

proxy_pass         http://backend ;

proxy_redirect     off;

proxy_set_header   Host             $host;

proxy_set_header   X-Real-Ip       $remote_addr;

proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;       }

 #后端的应用服务器通过X-Forwarded-For获取用户的真实IP

error_page  404  /404.html;

  #对于后端应用服务器抛出的错误404 进行页面重定向

location /404.html {

root  /spool/www;

}

     # 匹配URL为jpg,jpeg,gif结尾的,直接去系统文件读取

location ~* \.(jpg|jpeg|gif)$ {

root         /spool/www;

expires      30d;

       #浏览器缓存的时间

}

}

原文地址:https://www.cnblogs.com/dtdxrk/p/9438497.html

时间: 2024-10-07 05:51:29

深入Nginx之《常用参数配置技巧》的相关文章

nginx全局常用参数(核心功能参数)和其他模块参考

一.全局参数配置参考 常用参数配置示例: user nobody nobody; worker_processes 4; errorlog /var/log/nginx/nginxErrorLog.log; pid    /var/run/nignx.pid; worker_rlimit_nofile 65535; events {     use epoll;     worker_connections 65535; } user指定nginx worker进程运行的用户和用户组,默认是no

Production环境中iptables常用参数配置

production环境中iptables常用参数配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我相信在实际生产环境中有很多运维的兄弟跟我一样,很少用到iptables的这个命令.因为大家的服务器的防火墙都是关闭的,但是如果你的 服务器是有公网IP的话就会面临各种安全的问题呢,所以我建议大家还是开启防火墙,这个命令其实挺有意思的,就是配置起来比较繁琐,但是原理还 是很容易理解的,关于其原理百度上面一大堆,我这就不再废话啦~ 在配置之前,我们需要扫盲一下知识点: 一.ip

Weblogic内存溢出及常用参数配置

    http://www.360doc.com/content/14/0306/14/16134804_358216319.shtml 一.WebLogic内存溢出 最近访问量门户访问量突然增大,总是内存溢出,频繁宕机,调整了很多参数没起作用,偶然发现Weblogic域在不断增大,罪魁祸首竟然是Weblogic的诊断文件,也是造成Weblogic内存溢出的主要原因.当Weblogic启动时就加载了每个Server上的诊断文件,占用了大部分内存分配,用户访问量越大这个文件也随之越大,将他删除后

logback 常用参数配置详解

logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的组件. <appender>有两个必要属性name和class.name指定appender名称,class指定appender的全限定名. 1.ConsoleAppender: 把日志添加到控制台,有以下子节点: <encoder>:对日志进行格式化.(具体参数稍后讲解 ) &

nginx 高并发参数配置及linux内核参数优化

一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1.  worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8). 2.  worker_cpu_affinity 00000001 0000001000000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一个进程分配到

Nginx之常用基本配置(二)

上一篇我们把nginx的主配置文件结构大概介绍了下,全局配置段比较常用的指令说了一下,http配置段关于http服务器配置指令介绍了下,以及有几个调优的指令,server_name的匹配机制,错误页面自定义,location匹配机制以及root定义资源路径和alias定义资源路径的不同,更多的指令和详细的用法我们再用到的时候可去官方查看文档,前文回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12374456.html :今天这篇主要来聊一聊http配置段关

JVM CMS 常用参数配置(修订)

-XX:+UseConcMarkSweepGC 该标志首先是激活CMS收集器.默认HotSpot JVM使用的是并行收集器. -XX:UseParNewGC 当使用CMS收集器时,该标志激活年轻代使用多线程并行执行垃圾回收.这令人很惊讶,我们不能简单在并行收集器中重用-XX:UserParNewGC标志,因为概念上年轻代用的算法是一样的.然而,对于CMS收集器,年轻代GC算法和老年代GC算法是不同的,因此年轻代GC有两种不同的实现,并且是两个不同的标志.注意最新的JVM版本,当使用-XX:+Us

JVM常用参数配置---摘自《深入理解java虚拟机》《Java性能权威指南》

//常见配置汇总 //堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置新生代大小 -XX:NewRatio=n:设置新生代和老年代的比值.如:为3,表示新生代与老年代比值为1:3,新生代占整个新生代老年代和的1/4 -XX:SurvivorRatio=n:新生代中Eden区与两个Survivor区的比值.注意Survivor区有两个.如:3,表示Eden:Survivor=3:2,一个Survivor区占整个新生代的1/5 -XX:PermSize=n:设置永

hive常用参数配置设置

hive.exec.mode.local.auto 决定 Hive 是否应该自动地根据输入文件大小,在本地运行(在GateWay运行) true hive.exec.mode.local.auto.inputbytes.max 如果 hive.exec.mode.local.auto 为 true,当输入文件大小小于此阈值时可以自动在本地模式运行,默认是 128兆. 134217728L hive.exec.mode.local.auto.tasks.max 如果 hive.exec.mode.