nginx 注释配置及详解

前言

    DMZ(Demilitarized Zone) 非军事区,生产环境 WEB 服务部署的区域,公司的架构为一台nginx 充当 load balance 服务,负载到两台 nginx 上面,反向代理至后台服务,但是nginx 用的全是默认配置加上 proxy_pass 和 upstream,没有进行针对性的优化。

 

nginx 进程配置

    除了可以使用 ulimit 命令对内核参数进行配置,nginx 也支持对自身使用内核资源进行配置。

    nginx 默认使用一个 cpu 资源,即开启一个进程处理 web 请求,默认进程打开的最大连接数为 1024,这在生产上面是远远不够的。

    配置如下:

    

#user
user nobody;
#pid file 
pid logs/nginx.pid;#--------------------------- 进程---------------------------
#worker进程数,通常设置参考服务器 CPU 数量,auto为自动检测
#worker_process 1;
worker_processes auto;
#进程分配的 cpu
worker_cpu_affinity 000000001 00000010 00000100 00010000 00100000 01000000 10000000;
#worker进程打开最大文件描述符数,最好与 ulimit -u 保持一致
worker_rlimit_nofile 100000;
#全局错误日志
error_log  logs/error.log;#events模块中包含nginx中所有处理连接的设置
events {#worker进程同时打开的最大连接数,理论上每台 nginx 服务器的最大连接数为 worker_process * worker_connectionsworker_connections 102400;#告诉nginx收到一个新链接通知后接受尽可能多的链接multi_accept on;#设置用于复用客户端线程的轮训方法,使用 epoll 的 I/O 模型use epoll;
}

 

http 域配置

    http 模块配置 nginx 处理 http 请求,是 nginx 的核心配置,也是优化 nginx 的关键,大多数 nginx 的功能都是围绕着 http 域来进行的。

    

http {#打开或关闭错误页面中的nginx版本号,生产环境中这些是需要关闭的,降低版本号带来的漏洞概率。server_tokens off;#server_tag off;#server_info off;#优化磁盘IO设置,指定nginx是否调用sendfile函数来输出文件,普通应用设为on,下载等磁盘IO高的应用,可设为offsendfile on;#设置nginx在一个数据包里发送所有头文件,而不是一个接一个的发送tcp_nopush on;#设置nginx不要缓存数据,而是一段一段的发送,当需要及时发送数据时,就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值tcp_nodelay on;#---------------------------日志---------------------------#设置nginx是否记录访问日志,关闭这个可以让读取磁盘IO操作更快access_log on;#设置nginx只记录严重错误#error_log logs/error.log crit;#定义日志格式,变量的意思另附博客详解,定义的日志格式可在 access_log logs/access.log main 中选取log_format main '$remote_addr - $remote_user [$time_local] '' "$request"  $status  $body_bytes_sent  '' "$http_referer"   "$http_user_agent" ';log_format porxy '$http_x_forwarded_for - $remote_user [$time_local] '' "$request" $status $body_bytes_sent '' "$http_referer" "$http_user_agent" '; #设置日志文件缓存(默认是 off),max 设置缓存中最大文件描述符数量,inactive 存活时间,valid 检查频率,min_users 在 inactive 时间内最少使用次数,达到的日志文件描述符记入缓存open_log_file_cache max=1000 inactive=20s valid=1m min_users=2;  #记录重写日志rewrite_log off;        #给客户端分配keep-alive链接超时时间keepalive_timeout 30;#--------------------------- 限流 ---------------------------#limit_conn 和 limit_req 可添加到特定 Server 或 location 节点#1、控制 session#设置用户保存各种key的共享内存的参数,5m指的是5兆,$binary_remote_addr 根据远程客户端地址,$server_name 根据服务器名称limit_conn_zone $binary_remote_addr zone=addr:5m;#为给定的key设置最大的连接数,这里的key是addr,设定的值是100,根据上面的定义说允许每一个IP地址最多同时打开100个连接,如果共享内存定义的是 $server_name 那么这里是允许服务器最多同时打开100个连接。limit_conn addr 100;#限制流量limit_rate 100k;#2、漏桶方法#定义共享内存,与上面的一样,rate 定义请求次数(1 秒 20次)limit_req_zone $binary_remote_addr zone=addr:5m rate=20r/s;#burst=5 漏桶数为5,即如果第1、2、3、4秒请求为19,那么第5秒25次是可以允许的,nodelay 如果没有则严格使用平均速率限制请求数limit_raq zone=addr burst=5 nodelay;#include指在当前文件中包含另一个文件内容,一般 Server 域是放在另一个配置文件中的,主配置文件中包含下即可。include porxy.types;#设置文件使用默认的mine-typedefault_type text/html;#设置默认字符集charset UTF-8;#-----------------------------gzip 数据-----------------------------#设置nginx采用gzip压缩的形式发送数据,减少发送数据量,但会增加请求处理时间及CPU处理时间,需要权衡gzip on;#加vary给代理服务器使用,针对有的浏览器支持压缩,有个不支持,根据客户端的HTTP头来判断是否需要压缩gzip_vary on;#nginx在压缩资源之前,先查找是否有预先gzip处理过的资源#gzip_static on;#为指定的客户端禁用gzip功能gzip_disable "MSIE[1-6]\.";#允许或禁止压缩基于请求和相应的响应流,any代表压缩所有请求gzip_proxied any;#设置对数据启用压缩的最少字节数,如果请求小于10240字节则不压缩,会影响请求速度gzip_min_length 10240;#设置数据压缩等级,1-9之间,9最慢压缩比最大gzip_comp_level 2;#设置需要压缩的数据格式gzip_types text/plain text/css text/xml text/javascript  application/json application/x-javascript application/xml application/xml+rss; #-----------------------------cache 文件-----------------------------#开发缓存的同时也指定了缓存文件的最大数量,20s如果文件没有请求则删除缓存open_file_cache max=100000 inactive=20s;#指多长时间检查一次缓存的有效信息open_file_cache_valid 60s;#文件缓存最小的访问次数,只有访问超过5次的才会被缓存open_file_cache_min_uses 5;#当搜索一个文件时是否缓存错误信息open_file_cache_errors on;#允许客户端请求的最大单文件字节数client_max_body_size 8m;#冲区代理缓冲用户端请求的最大字节数client_header_buffer_size 32k;#-----------------------------代理-----------------------------proxy_redirect off;#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP,如果不配置那么web服务器只能获取到代理服务器的ipproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#nginx跟后端服务器连接超时时间(代理连接超时)proxy_connect_timeout 60;#连接成功后,后端服务器响应时间(代理接收超时)proxy_read_timeout 120;#后端服务器数据回传时间(代理发送超时)proxy_send_timeout 20;#设置代理服务器(nginx)保存用户头信息的缓冲区大小proxy_buffer_size 32k;#proxy_buffers缓冲区,网页平均在32k以下的设置proxy_buffers 4 128k;#高负荷下缓冲大小(proxy_buffers*2)proxy_busy_buffers_size 256k;#设定缓存文件夹大小,大于这个值,将从upstream服务器传proxy_temp_file_write_size 256k;#1G内存缓冲空间,3天不用删除,最大磁盘缓冲空间2Gproxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:1024m inactive=3d max_size=2g;#-----------------------------负载均衡-----------------------------#设定负载均衡服务器列表参考博客 nginx 负载均衡配置upstream myServer{#后端服务器访问规则#ip_hash;server 192.168.0.1:10001 weight=3 max_files=2 file_timeout=30;server 192.168.0.2:10002 weight=3 max_conns=10000;server 192.168.0.3:10003 weight=4;server 192.168.0.4:10004 backup;}

 

Server 域配置

    虚拟主机配置模块,反向代理或负载均衡挂载的站点。

    

server {#虚拟主句监听的端口listen 80;#定义访问的域名server_name www.myserver.com;#设定本虚拟主机的访问日志,使用 main 格式access_log logs/myserver.com.access.log main;#可以在 Server 域中配置限流,具体通过什么方式限流是前面建立共享内存区时定义的,这里只是配置具体限流多少limit_raq zone=addr burst=5 nodelay;limit_conn addr 100;  #默认请求# 语法规则:location [=|~|~*|^~] /uri/ {...} 先匹配普通location,在匹配正则location# = 开头表示精确匹配# ^~ 开头表示uri以某个常规字符串开头,理解为匹配url路径即可,无需考虑编解码# ~ 开头表示区分大小写的正则匹配# ~* 开头表示不区分大小写的正则匹配# !~ 开头表示区分大小写的不匹配的正则# !~* 开头表示不区分大小写的不匹配的正则# / 通用匹配,任何请求都会被匹配到location / {#定义服务器的默认网站根目录位置root html;#定义首页索引文件的名称index index.html index.htm;#使用 myServer 负载均衡服务器组proxy_pass http://myServer;#当然也可以在 location 域中配置限流limit_raq zone=addr burst=5 nodelay;limit_conn addr 100; }#定义错误提示页面error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}#静态文件,nginx自己处理location ~ ^/(images|javascript|js|css|flash|media|static)/{root /var/www/virtual/htdocs;#过期时间1天expires 1d;#关闭媒体文件日志access_log off;log_not_found off;}#设定查看Nginx状态的地址location /NginxStatus {#!stub_status on; #无此关键字access_log off;auth_basic "NginxStatus";auth_basic_user_file conf/htpasswd;}#禁止访问的文件.htxxxlocation ~ /\.ht {deny all;}}

 

    简单的配置,nginx 还有很多功能,包括第三方集成的功能,很强大,后续慢慢添加。

转载于:https://www.cnblogs.com/muhy/p/10528576.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么无法运行谷歌play_什么是Google Play积分,以及如何使用它们?

为什么无法运行谷歌playThe Google Play Store is home to thousands of apps, games, movies, e-books, and more. You might find yourself making a lot of purchases there, so why not get rewarded for it? That’s where Google Play Points come in. Google Play商店提…

2019年春季学期第三周作业

本周作业 本周请大家完成上周挑战作业的第一部分:给定一个整数数组(包含正负数),找到一个具有最大和的子数组,返回其最大的子数组的和。 例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子数组为[3, 10, -4, 7, 2] 1).实验代…

Linux实验二:linux 常用命令练习

ls命令 列出目录内容 echo命令 显示字符串 date命令 显示或设置系统的日期与时间 cal命令 显示日历 who命令 列出登录用户信息 chown命令 chgrp命令 改变文件所属的用户组 chmod命令 改变文件访问权限 find命令 在目录中搜索文件 转载于:https://www.cnblogs.com/nullno/p/87…

python数据类型之元组类型

#为何要有元组&#xff0c;存放多个值&#xff0c;元组不可变&#xff0c;更多的是用来做查询 t(1,[1&#xff0c;2,3],a,(1,2)) #ttuple((1,[1,2,3],a,(1,2))) # print(type(t)) <class tuple># #元组可以作为字典的key # d{(1,2):egon} # print(d,type(d),d[(1,2)])# …

短语密码_使用密码短语以提高安全性

短语密码Did you know that Windows supports using passwords of up to 127 characters? I don’t use passwords anymore, and I haven’t for years. I’ve switched to using password phrases instead. 您知道Windows支持使用最多127个字符的密码吗&#xff1f; 我不再使…

「单点登录与权限管理」系列概述

首先&#xff0c;感谢几位朋友在朋友圈转发我的文章&#xff0c;小声的告诉你们&#xff0c;是我主动让他们帮忙转发的&#xff1a;&#xff09;在朋友们的分享下&#xff0c;凌晨推送的一篇文章&#xff0c;阅读人数达到了280多&#xff0c;很满足&#xff0c;我会坚持写下去&…

Jupyter notebook: TypeError: __init__() got an unexpected keyword argument 'io_loop 问题

使用环境&#xff1a;Anaconda3&#xff08;Python3.6&#xff09; 创建一个新的notebook时&#xff0c;无法连接到kernel&#xff0c;terminal上显示错误为&#xff1a;TypeError: __init__() got an unexpected keyword argument io_loop 解决方法&#xff1a; conda install…

在Ubuntu Linux中获取上次访问的文件时间

Ubuntu Linux has a rich set of commands for manipulating and accessing files. The stat utility gives detailed access to file information, including last accessed and last modified file time. Ubuntu Linux具有一组丰富的用于操作和访问文件的命令。 stat实用程序…

MySQL新增从库

项目背景描述&#xff1a;在项目的开始只有一个MySQL实例在运行&#xff0c;后期因为安全性&#xff0c;压力&#xff0c;备份等原因需要在此实例的基础上面新增一个从库。分析&#xff1a;MySQL主从是基于binlog日志来实现的&#xff0c;那么需要主服务器开启binlog&#xff0…

第一个议题

① 在每个问题后面&#xff0c;请说明哪一章节的什么内容引起了你的提问&#xff0c;提供一些上下文 ② 列出一些事例或资料&#xff0c;支持你的提问 。 ③ 说说你提问题的原因&#xff0c;你说因为自己的假设和书中的不同而提问&#xff0c;还是不懂书中的术语&#xff0c;还…

在Windows Vista中使用符号链接

One of the long-awaited features in Windows Vista was the ability to use symbolic links, the way you can in linux. Sadly, they don’t work quite as well as they could, but it’s a big upgrade from prior versions, and has solved a number of problems for me …

shell学习笔记--自我总结

一、文件 touch file # 创建空白文件 rm -rf 目录名 # 不提示删除非空目录(-r:递归删除 -f强制) dos2unix # windows文本转linux文本 unix2dos # linux文本转windows文本 enca filename # 查看编码 安装 yu…

201671030107胡文艳实验三作业互评与改进报告

任务1&#xff1a;要给出所点评作业的链接地址&#xff0c;点评内容和阅读心得 读了你的这篇博客&#xff0c;一方面给我的印象就是排版整齐&#xff0c;内容充实&#xff0c;态度认真&#xff1b;另外一方面就是通过别人反省自己&#xff0c;看了你的博客&#xff0c;我觉得我…

进程handle获取线程_获取进程中的线程列表

进程handle获取线程The System.Diagnostics namespace contains functions that allow you to manage processes, threads, eventlogs and performance information. System.Diagnostics命名空间包含允许您管理进程&#xff0c;线程&#xff0c;事件日志和性能信息的函数。 The…

2018-3-28Linux系统管理(16)计算机网络基础

在这一章当中我们讲述计算机网络基础。一、计算机网络网络通信就像人与人之间的交流一样&#xff0c;说同一种语言&#xff0c;而后双方进行无障碍的通信交流&#xff0c;那么两台主机通信时&#xff0c;它们彼此交换数据的格式的前提为互相理解才可以&#xff0c;我们此前也有…

从Ubuntu命令行按进程名称杀死进程

There are a number of ways to kill a process if you know the name of the process. Here’s a couple different ways you can accomplish this. We are going to assume that the process we are trying to kill is named irssi 如果您知道进程的名称&#xff0c;则有多种…

18 南京 D

裸的最小球覆盖。 坐标范围大一些所以我们把初始的温度也设置的大一些。 1 #include <bits/stdc.h>2 using namespace std;3 typedef long long ll;4 typedef double db;5 const db INF 1e100;6 const db delta 0.98;7 const db eps 1e-8;8 struct p3{9 db x,y,z;…

如何在iPhone或iPad的控制中心中控制智能家居设备

Apple’s Home app offers quick controls for controlling smart lights, doorbells, thermostats, and other smart home devices—right in your iPhone or iPad’s Control Center. Here’s how to set it up and use it. Apple的Home应用程序可在iPhone或iPad的控制中心内…

亚信安全与安徽电信共创“云网融合”安全新局面

全面提升公共安全能力 联合推“天翼U盾”保障移动政务安全 在近日举办的安徽“互联网”产业合作峰会上&#xff0c;亚信安全宣布与中国电信安徽公司达成战略合作&#xff0c;双方将在“云网融合”的生态基础上打造特色安全服务、促进政企协同安全监管、共创网络安全平安城市等…

idea中开启Run Dashboard

若没有 下一步 ok 转载于:https://www.cnblogs.com/aijiajia1314/p/10551007.html