Nginx 优化配置
基本配置优化(优化后配置样例,可以改后直接上生产)
1 #头部配置
2 user nginx nginx; #定义nginx的启动用户,不建议使用root
3 worker_processes 4; #定位为cpu的内核数量,因为我的环境配置是4核,所以就写4。不过这值最多也就是8,8个以上也就没什么意义了,想继续提升性能只能参考下面一项配置
4 worker_cpu_affinity 0001 0010 0100 1000; #此项配置为开启多核CPU,对你先弄提升性能有很大帮助nginx默认是不开启的,1为开启,0为关闭,因此先开启第一个倒过来写,
5 第一位0001(关闭第四个、关闭第三个、关闭第二个、开启第一个)
6 第二位0010(关闭第四个、关闭第三个、开启第二个、关闭第一个)
7 第三位0100(关闭第四个、开启第三个、关闭第二个、关闭第一个)
8 后面的依次类推,有智商的应该都可以看懂了吧? 那么如果是16核或者8核cpu,就注意为00000001、00000010、00000100,总位数与cpu核数一样。
9
10 error_log /data/logs/nginx/error.log crit; #这两项基本不用我说
11 pid /usr/local/nginx/nginx.pid;
12
13 #Specifies the value for maximum file descriptors that can be opened by this process.
14 worker_rlimit_nofile 65535; #这个值为nginx的worker进程打开的最大文件数,如果不配置,会读取服务器内核参数(通过ulimit -a查看),如果内核的值设置太低会让nginx报错(too many open
15 file),但是在此设置后,就会读取自己配置的参数不去读取内核参数
16
17 events
18 {
19 use epoll; #客户端线程轮询方法、内核2.6版本以上的建议使用epoll
20 worker_connections 65535; #设置一个worker可以打开的最大连接数
21 }
22 http {
23 include mime.types;
24 default_type application/octet-stream;
25
26 #charset gb2312;
27 server_tokens off; #为错误页面上的nginx版本信息,建议关闭,提升安全性
28
29 server_names_hash_bucket_size 128;
30 client_header_buffer_size 32k;
31 large_client_header_buffers 4 32k;
32 client_max_body_size 8m;
33
34 sendfile on; #开启sendfile()函数,sendfile可以再磁盘和tcp socket之间互相copy数据。
35 tcp_nopush on; #告诉nginx在数据包中发送所有头文件,而不是一个一个的发
36
37 #keepalive_timeout 15;
38 keepalive_timeout 120;
39
40 tcp_nodelay on;
41
42 proxy_intercept_errors on;
43 fastcgi_intercept_errors on;
44 fastcgi_connect_timeout 1300;
45 fastcgi_send_timeout 1300;
46 fastcgi_read_timeout 1300;
47 fastcgi_buffer_size 512k;
48 fastcgi_buffers 4 512k;
49 fastcgi_busy_buffers_size 512k;
50 fastcgi_temp_file_write_size 512k;
51
52 proxy_connect_timeout 20s;
53 proxy_send_timeout 30s;
54 proxy_read_timeout 30s;
55
56
57
58 gzip on; #gzip是告诉nginx采用gzip后的数据来传输文件,会大量减少我们的发数据的量
59 gzip_min_length 1k;
60 gzip_buffers 4 16k;
61 gzip_http_version 1.0;
62 gzip_comp_level 2;
63 gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
64 gzip_vary on;
65 gzip_disable msie6;
66 #limit_zone crawler $binary_remote_addr 10m;
67
68 log_format main '$http_host $remote_addr - $remote_user [$time_local] "$request" '
69 '$status $body_bytes_sent "$http_referer" '
70 '"$http_user_agent" "$http_x_forwarded_for" '
71 '$request_time $upstream_response_time';
72
73 #proxy_temp_path和proxy_cache_path指定的路径必须在同一分区,因为它们之间是硬链接的关系
74 #proxy_temp_path /var/cache/nginx/proxy_temp_dir;
75 #设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。
76 #proxy_cache_path /var/cache/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
77
78 include /usr/local/nginx/conf/vhosts/*.conf;
79
80 error_page 404 = https://www.niu.com/404/;
81 #error_page 500 502 503 504 = http://service.niu.com/alien/;
82
83 }
如果是高并发架构,需要在nginx的服务器上添加如下的内核参数
这些参数追加到/etc/sysctl.conf,然后执行sysctl -p 生效。
#每个网络接口接收数据包速度比内核处理速度快的时候,允许发送队列数目数据包的最大数
net.core.netdev_max_backlog = 262144
#调节系统同时发起的tcp连接数
net.core.somaxconn = 262144
#该参数用于设定系统中最多允许存在多少TCP套接字不被关联到任何一个用户文件句柄上,主要目的为防止Ddos攻击
net.ipv4.tcp_max_orphans = 262144
#该参数用于记录尚未收到客户端确认信息的连接请求的最大值
net.ipv4.tcp_max_syn_backlog = 262144
#nginx服务上建议关闭(既为0)
net.ipv4.tcp_timestamps = 0
#该参数用于设置内核放弃TCP连接之前向客户端发送SYN+ACK包的数量,为了建立对端的连接服务,服务器和客户端需要进行三次握手,第二次握手期间,内核需要发送SYN并附带一个回应前一个SYN的ACK,这个参
数主要影响这个过程,一般赋予值为1,即内核放弃连接之前发送一次SYN+ACK包。
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
反爬虫配置
增加反爬虫配额文件:
1 sudo vim /etc/nginx/anti_spider.conf
2
3 #禁止Scrapy等工具的抓取
4 if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
5 return 403;
6 }
7
8 #禁止指定UA及UA为空的访问
9 if ($http_user_agent ~ "WinHttp|WebZIP|FetchURL|node-superagent|java/|FeedDemon|Jullo|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|Java|Feedly|Apache-HttpAsyncClient|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|BOT/0.1|YandexBot|FlightDeckReports|Linguee Bot|^$" ) {
10 return 403;
11 }
12
13 #禁止非GET|HEAD|POST方式的抓取
14 if ($request_method !~ ^(GET|HEAD|POST)$) {
15 return 403;
16 }
17
18 #屏蔽单个IP的命令是
19 #deny 123.45.6.7
20 #封整个段即从123.0.0.1到123.255.255.254的命令
21 #deny 123.0.0.0/8
22 #封IP段即从123.45.0.1到123.45.255.254的命令
23 #deny 124.45.0.0/16
24 #封IP段即从123.45.6.1到123.45.6.254的命令是
25 #deny 123.45.6.0/24
26
27 # 以下IP皆为流氓
28 deny 58.95.66.0/24;
在网站配置server段中都插入include /etc/nginx/anti_spider.conf. 你可以在默认的80端口配置上加上此句
重启Nginx服务
常见的爬虫UA:
1 FeedDemon 内容采集
2 BOT/0.1 (BOT for JCE) sql注入
3 CrawlDaddy sql注入
4 Java 内容采集
5 Jullo 内容采集
6 Feedly 内容采集
7 UniversalFeedParser 内容采集
8 ApacheBench cc攻击器
9 Swiftbot 无用爬虫
10 YandexBot 无用爬虫
11 AhrefsBot 无用爬虫
12 YisouSpider 无用爬虫(已被UC神马搜索收购,此蜘蛛可以放开!)
13 jikeSpider 无用爬虫
14 MJ12bot 无用爬虫
15 ZmEu phpmyadmin 漏洞扫描
16 WinHttp 采集cc攻击
17 EasouSpider 无用爬虫
18 HttpClient tcp攻击
19 Microsoft URL Control 扫描
20 YYSpider 无用爬虫
21 jaunty wordpress爆破扫描器
22 oBot 无用爬虫
23 Python-urllib 内容采集
24 Indy Library 扫描
25 FlightDeckReports Bot 无用爬虫
26 Linguee Bot 无用爬虫
使用curl -A 模拟抓取即可,比如:
# -A表示User-Agent
# -X表示方法: POST/GET
# -I表示只显示响应头部
curl -X GET -I -A 'YYSpider' localhost HTTP/1.1 403 Forbidden
Server: nginx/1.10.3 (Ubuntu)
Date: Fri, 08 Dec 2017 10:07:15 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
HTTPS设置
https://www.cnblogs.com/guaiyouyisi/p/9391349.html
Nginx 优化配置的更多相关文章
- nginx优化配置大全
由于面试被问到nginx优化做过哪些 后来发现,其实做过的也不少,忘了的更不少,因此写个博客记录一下(里面有一些内容来源于其他作者). 配置文件样例为生产环境样例. 1.nginx基本优化 安装方式有 ...
- Nginx优化配置,轻松应对高并发
Nginx现在已经是最火的web服务器之一,尤其在静态分离和负载均衡方面,性能十分优越.接下来我们主要看下Nginx在高并发环境下的优化配置,主要是针对 nginx.conf 文件的属性设置.我们打开 ...
- nginx优化配置
一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu ...
- Nginx 优化配置及详细注释
Nginx 的nginx.conf文件,是调优后的,具体影响已经写清楚注释,可以拿来用,有一些设置无效,我备注上了,不知道是不是版本的问题,回头查一下再更正. #普通配置 #==性能配置 #运行用户 ...
- Nginx优化—配置优化
完整配置如下所示: user nginx; #运行的用户 pid /var/run/nginx.pid; worker_processes auto; #定义了nginx对外提供web服务时的word ...
- nginx优化:配置gzip压缩页面提高访问速度(nginx1.18.0)
一,为什么nginx要使用gzip 1,压缩的作用: 页面使用gzip压缩之后, 页面大小可以压缩到原来的1/7左右, 传输速度和页面打开时间都可以大幅度提高, 有利于用户访问页面体验的提升 2,Ng ...
- nginx + SSL优化配置
nginx + SSL优化配置: #http段添加如下配置项: http { ssl_prefer_server_ciphers on; #设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户 ...
- CentOS6.5 Nginx优化编译配置[续]
继续上文CentOS6.5 Nginx优化编译配置本文记录有关Nginx系统环境的一些细节设置,有关Nginx性能调整除了配置文件吻合服务器硬件之前就是关闭不必要的服务.磁盘操作.文件描述符.内核调整 ...
- Nginx在windows上安装 及 Nginx的配置及优化
https://www.cnblogs.com/Chiler/p/8027167.html http://www.runoob.com/linux/nginx-install-setup.html 前 ...
随机推荐
- c#按指定长度分解数组
在操作数据库时,我们需要注意一点,就是in查询的参数不能超过1000个,否则会报错,所以我们在进行in查询的时候需要对参数数量进行控制: 用于分解数组的扩展方法: /// <summary> ...
- Mysql中的排序查询
进阶3:排序查询 语法: select 查询列表 from 表 [where 筛选条件]order by 排序列表 [asc 升序 | desc降序] 例子 查询员工信息,要求工资从高到低 SELEC ...
- C语言----流程图(基础篇四)
大家晚上好,最近忙每天忙于项目没有时间更新自己的博客,时间就是海绵嘛硬挤挤就是有的,咂看标题" 流程图 ",编程界的一个不可或缺的技能,特别是在做复杂的逻辑的时候要处理好每一步的关 ...
- .NET中的泛型概述
什么是泛型? 泛型是具有占位符(类型参数)的类.结构.接口和方法,这些占位符是类.结构.接口和方法所存储或使用的一个或多个类型的占位符.泛型集合类可以将类型形参用作其存储的对象类型的占位符:类型形参呈 ...
- SQL 查询表外键_T-Sql 2016——级联删除外键查询
SELECT fk.name AS foreign_key_name, oSub.name AS table_name, SubCol.name AS table_column, oMain.name ...
- Kafka分布式的消息顺序
Kafka分布式的单位是partition,同一个partition用一个write ahead log组织,所以可以保证FIFO的顺序.不同partition之间不能保证顺序. 但是绝大多数用户都可 ...
- 指针总结指向const的指针、const指针、指向const指针的const指针
指针的一些总结 const与指针 指向const的指针指的是指针指向的数据是常量,不可以被修改,但指针变量本身可以被修改,如const int *p:严格说不能用指针间接修改指向的数据,但该变量可 ...
- Java之路---Day15(Collection类)
2019-11-01-22:09:09 目录 1.Collection集合的概念 2.Collection集合常用方法 3.Iterator迭代器 4.增强for 5.Collection常用工具类 ...
- 详解js中的this指向
this指向问题是个老生常谈的问题了,现在我给大家一个例子 var obj={ bar:'Cynthia' , foo:function(){ console.log(this.bar,"w ...
- JavaScript的函数call和apply的区别、以及bind方法
1.call和apply的定义和区别 call和apply的作用一样,唯一不同的是:接受的参数不同. apply:方法能够劫持另一个对象的方法,继承另一个对象的属性. Funciton.apply(o ...