nginx常使用配置总结

  • 时间:2018-06-20 22:00 作者:皮皮的小竹子 来源:皮皮的小竹子 阅读:99
  • 扫一扫,手机访问
摘要:Nginx 是一个高性可以的 Web 和反向代理商服务器, 它具备有很多非常优越的特性.一、公共配置1、并发连接配置1.1 worker_processes nginx运行工作进程个数,一般设置cpu的核心或者者核心数x2。 nginx.conf配置文件中,设置:worker_processes 4

Nginx 是一个高性可以的 Web 和反向代理商服务器, 它具备有很多非常优越的特性.

一、公共配置

1、并发连接配置

1.1 worker_processes

nginx运行工作进程个数,一般设置cpu的核心或者者核心数x2。

nginx.conf配置文件中,设置:worker_processes 4。

worker_processes最多开启8个,8个以上性可以提升不会再提升了,而且稳固性变得更低,所以8个进程够使用了。

1.2 worker_cpu_affinity

nginx默认是没有开启利使用多核cpu的配置的。需要通过添加worker_cpu_affinity配置参数来充分利使用多核cpu,cpu是任务解决,当计算最费时的资源的时候,cpu核用上的越多,性可以就越好。

用方法和范例:

2核cpu,开启2个进程

worker_processes 2;

worker_cpu_affinity 01 10;

 4cpu,开启4个进程 worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000;

1.3 worker_rlimit_nofile

这个指令是指当一个nginx 进程打开的最多文件形容符数目,理论值应该是最多打开文件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n (ulimit -n 65535能设置最大打开文件数为65535)的值保持一致。

现在在Linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。实际我们填入一个65535,足够了,一个网站的并发达到这么大的数量,也算一个大站了!

1.4 work_connections

work_connections是单个worker进程允许用户端最大连接数,这个数值一般根据服务器性可以和内存来制定.

nginx作为http服务器的时候:max_clients = worker_processes * worker_connections

二、Web 服务器

相比 Apache,Nginx 用更少的资源,支持更多的并发连接,表现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。可以够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.

nginx常使用配置总结

listen:表示当前的代理商服务器监听的端口,默认的是监听80端口。注意,假如我们配置了多个server,这个listen要配置不一样,不然就不可以确定转到哪里去了。

server_name:表示监听到之后需要转到哪里去,这时我们直接转到本地,这时是直接到nginx文件夹内。

location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里

root:里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻觅相应的文件,这里对我们之后的静态文件伺服很有使用。

index:当没有指定主页时,默认会选择这个指定的文件,它能有多个,并按顺序来加载,假如第一个不存在,则找第二个,依此类推。

location:分为普通匹配以及正则匹配。

普通匹配,包括:^~(把这个前缀使用于一个常规字符串,假如路径匹配那么不测试正则表达式)、 = (准确匹配)、无前缀。

普通匹配,遵循最长匹配规则,假设一个请求匹配到了两个普通规则,则选择匹配长度大的那个,一般情况下普通匹配成功后,还是会继续正则匹配,一旦正则匹配也匹配成功后,以正则匹配为准。但是^~和=除外,即^~和=匹配成功后,不再继续正则匹配。

正则 location:~ (区分大小写)、~*(不区分大小写) 。

location = / {

[ configuration A ]

}

location / {

[ configuration B ]

}

location /documents/ {

[ configuration C ]

}

location ^~ /images/ {

[ configuration D ]

}

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

[ configuration E ]

}

“/”请求会匹配到A,准确匹配。

“/index.html”会匹配到B,

“/documents/document.html”请求会匹配到C,

“/images/1.gif”会匹配到D,

“/documents/1.jpg”会匹配到E。

location里还可增加try_files: $uri $uri/ /index.html。依次按照顺序检查文件能否存在.

三、反向代理商和域名转发

反向代理商(Reverse Proxy)方式是指以代理商服务器来接受internet上的连接请求,而后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的用户端,此时代理商服务器对外就体现为一个服务器。

user www www;

worker_processes 1;

error_log logs/error.log;

pid logs/nginx.pid;

worker_rlimit_nofile 65535;

#Nginx事件解决模型

events {

use epoll; #nginx采使用epoll事件模型,解决效率高

worker_connections 65535;

multi_accept on;#默认是on,设置为on后,多个worker按串行方式来解决连接,也就是一个连接只有一个worker被唤醒,其余的处于休眠状态,设置为off后,多个worker按并行方式来解决连接,也就是一个连接会唤醒所有的worker,直到连接分配完毕,没有获得连接的继续休眠。当你的服务器连接数不多时,开启这个参数会让负载有肯定的降低,但是当服务器的吞吐量很大时,为了效率,能关闭这个参数。

}

http {

include mime.types;

default_type application/octet-stream;

include /usr/local/nginx/conf/reverse-proxy.conf;

sendfile on;#//开启高效文件传输模式,sendfile指令指定nginx能否调使用sendfile函数来输出文件,对于普通应使用设为 on,假如使用来进行下载等应使用磁盘IO重负载应使用,能设置为off,以平衡磁盘与网络I/O解决速度,降低系统的负载。

keepalive_timeout 65;#用户端连接保持会话超时时间,超过这个时间,服务器断开这个链接

gzip on;

client_max_body_size 50m; #缓冲区代理商缓冲使用户端请求的最大字节数,能了解为保存到本地再传给使用户

client_body_buffer_size 256k;

client_header_timeout 3m;

client_body_timeout 3m;

send_timeout 3m;

proxy_connect_timeout 300s; #nginx跟后台服务器连接超时时间(代理商连接超时)

proxy_read_timeout 300s; #连接成功后,后台服务器响应时间(代理商接收超时)

proxy_send_timeout 300s;

proxy_buffer_size 64k; #设置代理商服务器(nginx)保存使用户头信息的缓冲区大小

proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置

proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)

proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传递请求,而不缓冲到磁盘

proxy_ignore_client_abort on; #不允许代理商端主动关闭连接

server {

listen 80;

server_name localhost;

location / {

root html;

index index.html index.htm;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

}

四、利使用反向代理商做负载均衡。

upstream www.lcapi.com{

server localhost:8080;

server localhost:9080;

}

server{

listen 80;

autoindex on;

server_name www.lcapi.com;

access_log /usr/local/nginx/logs/access.log combined;

index index.html index.htm index.jsp index.php;

#error_page 404 /404.html;

if ( $query_string ~* ".*[\;'\<\>].*" ){

return 404;

}

location / {

proxy_pass http://www.lcapi.com;

add_header Access-Control-Allow-Origin *;

}

}

我们在server外增加了一个upstream,而直接在proxy_pass里面直接使用http://+upstream的名称来用。upstream中的server元素必需要注意,不可以加http://,但proxy_pass中必需加。

1)轮询(默认)

默认选项,当weight不指定时,各服务器weight相同, 每个请求按时间顺序逐一分配到不同的后台服务器,假如后台服务器down掉,可以自动剔除。

upstream www.lcapi.com{

server localhost:8080;

server localhost:9080;

}

2)weight

指定轮询几率,weight和访问比率成正比,使用于后台服务器性可以不均的情况。假如后台服务器down掉,可以自动剔除。 比方下面配置,则1.11服务器的访问量为1.10服务器的两倍(后台节点中配置高的服务器能适当将weight设置大点)。

upstream www.lcapi.com{

server 192.168.1.10 weight=1;

server 192.168.1.11 weight=2;

}

3)ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后台服务器,能处理session不可以跨服务器的问题,实现session共享。假如后台服务器down掉,要手工解决。

upstream resinserver {

ip_hash;

server 192.168.1.10:8080;

server 192.168.1.11:8080;

}

4)url_hash

nginx常使用配置总结

5)fair(第三方)

nginx常使用配置总结

nginx常使用配置总结

未完,待续

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】什么是Web?零基础能不能学Web前端开发?(2019-07-19 07:04)
【网页前端|HTML】为什么学Web前端?选择Web前端理由(2019-07-17 20:28)
【网页前端|JS】Java面经-百度新入职老哥整理近半年学习经验,面试刷题路线!(2019-07-16 22:16)
【网页前端|HTML】最全面的前端开发指南(2019-07-15 12:57)
【系统环境|数据库】零基础如何快速学好大数据?(2019-06-29 12:27)
【系统环境|Linux】零基础如何学好大数据?必备需要学习知识(2019-06-18 11:54)
【系统环境|】Hadoop环境中管理大数据存储八大技巧(2019-06-15 11:01)
【系统环境|服务器应用】现在国内IT行业是不是程序员过多了?(2019-06-11 06:34)
【系统环境|服务器应用】新贵 Flutter(2) 自己设置 Widget(2019-06-11 06:34)
【系统环境|服务器应用】Android完整知识体系路线(菜鸟-资深-大牛必进之路)(2019-06-11 06:34)
手机二维码手机访问领取大礼包
返回顶部