导航:首页 > 使用方法 > nginx使用方法

nginx使用方法

发布时间:2022-10-04 04:21:50

❶ 使用 Nginx 限流

Nginx不仅可以做Web服务器、做反向代理、负载均衡,还可以做限流系统。此处我们就Nginx为例,介绍一下如何配置一个限流系统。

Nginx使用的限流算法是漏桶算法。

(1)安装Nginx。
如果你的Linux是Ubuntu或Debian,使用apt-get安装,在命令行中输入以下命令:

如果是CentOS,使用yum安装,在命令行中输入以下命令:

(2)找到Nginx所使用的配置文件所在的位置。在Ubuntu和Debian是在如下位置:

而CentOS则是在如下位置:

(3)在http块中,配置基础的限流配置:

其中4到8行定义的是一个服务器接口。而第2行和第6行配合完成了一个限流设置,下面解释一下这两行做的事情:

limit_req_zone命令在Nginx的配置文件中专门用于定义限流,它必须被放在http块中,否则无法生效,因为该命令只在http中被定义。

该字段包含三个参数:

第一个参数,就是键(key),即值$binary_remote_addr所在的位置,它代表的是我们的限流系统限制请求所用的键。

此处,我们使用了$binary_remote_addr,它是Nginx内置的一个值,代表的是客户端的IP地址的二进制表示。因此换言之,我们的示例配置,是希望限流系统以客户端的IP地址为键进行限流。

对Nginx有经验的读者可能还知道有一个Nginx内置值为binary_remote_addr是Nginx的社区推荐用值,因为它是二进制表达,占用的空间一般比字符串表达的$remote_addr要短一些,在寸土寸金的限流系统中尤为重要。

第二个参数是限流配置的共享内存占用(zone)。为了性能优势,Nginx将限流配置放在共享内存中,供所有Nginx的进程使用,因为它占用的是内存,所以我们希望开发者能够指定一个合理的、既不浪费又能存储足够信息的空间大小。根据实践经验,1MB的空间可以储存16000个IP地址。

该参数的语法是用冒号隔开的两个部分,第一部分是给该部分申请的内存一个名字,第二部分是我们希望申请的内存大小。

因此,在该声明中,我们声明了一个名叫mylimit(我的限制)的内存空间,然后它的大小是10M,即可以存储160000个IP地址,对于实验来说足够了。

第三个配置就是访问速率(rate)了,格式是用左斜杠隔开的请求数和时间单位。这里的访问速率就是最大速率,因此10r/s就是每秒10个请求。通过这台Nginx服务器访问后端服务器的请求速率无法超过每秒10个请求。

注意到第5行声明了一个资源位置/test/,因此我们第6行的配置就是针对这个资源的,通俗地说,我们在第6行的配置是针对特定API的,这个API就是路径为/test/的API,而其真正路径就是第8行声明的 http://backend 。注意,这个URL是不存在的,实际操作中,读者需要将它换成你已经开发好的业务逻辑所在的位置,Nginx在这里的作用只是一个反向代理,它自己本身没有资源。

第6行中,我们使用limit_req命令,声明该API需要一个限流配置,而该限流配置所在位置(zone)就是mylimit。

这样一来,所有发往该API的请求会先读到第6行的限流配置,然后根据该限流配置mylimit的名称找到声明在第2行的参数,然后决定该请求是否应该被拒绝。

但是这样还不够。不要忘了,Nginx使用的漏桶算法,不是时间窗口算法,我们前文介绍中说过,漏桶算法是有两个参数可以配置的!

(4)配置峰值。Nginx漏桶算法的峰值属性在API中设置。参数名为burst。如下:

在第6行中,我们只需要在声明limit_req的同时,指定burst就可以了,此处我们指定burst为20,即漏桶算法中我们的“桶”最多可以接受20个请求。

这样一个Nginx的限流系统就配置完毕了,但实际操作中,我们还可能需要很多别的功能,下面笔者就介绍几个很有用的配置技巧。

相对于传统的漏桶算法慢吞吞地转发请求的缺陷,Nginx实现了一种漏桶算法的优化版,允许开发者指定快速转发,而且还不影响正常的限流功能。开发者只需要在指定limit_req的一行中指定burst之后指定另一个参数nodelay,就可以在请求总数没有超过burst指定值的情况下,迅速转发所有请求了。如下所示:

您可能会担忧:这种情况下,会不会出现所有请求都被快速转发,然后接下来又有没有超过burst数量的请求出现,再次被快速转发,就好像固定窗口算法的漏洞一样,从而超过我们本来希望它能限制到的上限数量呢?答案是不会。Nginx的快速转发是这样实现的:

举例而言,配置如上所示,假如在某个瞬时有25个请求进入系统,Nginx会先转发20个(或21个,取决于瞬时情况),然后拒绝剩下的4个请求,并将当前桶中数量标为0,然后接下来的每100毫秒,缓慢恢复1个空位。

这样我们可以看到,Nginx既做到了快速转发消息,又不会让后端服务器承担过多的流量。

限流系统会提前拒绝请求,因此,我们在业务服务器上是肯定看不到这些请求的。假如我们收到一个报告说某用户在使用网站的时候出现错误,但是我们在业务服务器上又找不到相关的日志,我们如何确定是不是限流造成的呢?

只有限流系统的日志才能说明问题。因此,我们需要Nginx打印出它拒绝掉的请求的信息。但同时,Nginx打印的限流日志默认是错误(error),如果我们设置了一个基于日志错误扫描的警报,它扫到的限流错误,真的是我们希望给自己发警报的情况吗?

配置请求的位置就在资源中,使用的命令是limit_req_log_level,如下:

在第7行中,我们将Nginx的日志改为了警告(warn)。

限流的HTTP标准响应状态码是429,但是如果读者拿上述的配置文件直接去测试,会发现Nginx返回的是503(服务不可用)。到底应该返回什么状态码,是一个偏程序哲学的问题,此处我们不讨论,我们只讨论:如何让Nginx返回我们指定的状态码?

答案也是在同一个资源中,它的配置命令是limit_req_status,然后我们指定它为429即可:

除了以上功能以外,Nginx还支持很多复杂先进的限流功能,可以访问 https://docs.nginx.com/nginx/admin-guide/security-controls/controlling-access-proxied-http/ 作进一步的了解。

❷ 如何 使用 nginx 的ngx

在upstream中使用nginx变量的方法操作流程是:1. 创建upstream数据结构。if (ngx_http_upstream_create(r) != NGX_OK) {return NGX_HTTP_INTERNAL_SERVER_ERROR;}2. 设置模块的tag和schema。schema现在只会用于日志,tag会用于buf_chain管理。

❸ Nginx相关知识点

Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。

Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。

Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

自行安装

正向代理: 代理服务器站在客户端那边就是正向代理;
反向代理: 代理服务器站在原始服务器那边就是反向代理;
详解参考点击 Nginx正向代理与反向代理

Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。
Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。
并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。

如果你的nginx服务器给2台web服务器做代理,负载均衡算法采用轮询,那么当你的一台机器web程序iis关闭,也就是说web不能访问,那么nginx服务器分发请求还是会给这台不能访问的web服务器,如果这里的响应连接时间过长,就会导致客户端的页面一直在等待响应,对用户来说体验就打打折扣,这里我们怎么避免这样的情况发生呢。这里我配张图来说明下问题。

如果负载均衡中其中web2发生这样的情况,nginx首先会去web1请求,但是nginx在配置不当的情况下会继续分发请求道web2,然后等待web2响应,直到我们的响应时间超时,才会把请求重新分发给web1,这里的响应时间如果过长,用户等待的时间就会越长。

下面的配置是解决方案之一:

如果使用upstream指令配置了一组服务器作为被代理服务器,服务器中的访问算法遵循配置的负载均衡规则,同时可以使用该指令配置在发生哪些异常情况时,将请求顺次交由下一组服务器处理。

状态值可以是:error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。
内置策略: 1.轮询;2.加权轮询;3.Ip hash;
扩展策略: 就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。

Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

eg:

开启简单的缓存配置,只需要两个指令:proxy_cache_path和proxy_cache。
proxy_cache_path: 配置缓存的存放地址和其他的一些常用配置;
proxy_cache:指令是为了启动缓存;

相关配置说明:

该指令用于定义满足条件的响应不会被保存到缓存中。在条件字符串中至少有一个条件不为空或者0,符合这样条件的响应才不会被缓存。
举例如下

其中,cookie_nocache、arg_nocache...皆为变量,可以根据你访问的匹配策略来设置,其值只有2类,0和非0;

访问匹配策略例如:

如果在此链式配置中,只要有一个值不为0,则不会cache;例如:

则不会被cache.

注:一般会配合proxy_cache_bypass共同使用;

该指令用于定义哪些情况不从cache读取,直接从backend获取资源;配置方式同proxy_no_cache。

给缓存数据定义一个键,例如

该指令用于设置缓存哪些HTTP方法,默认缓存HTTP GET/HEAD方法,不缓存HTTP POST 方法.。

设置不同响应码的缓存时间,当不指定响应码的时候,例如

只对响应码为200,301,302的访问请求资源设置缓存时间,此外可以个性化定制,例如:

此外,还可以在相应header里设置优先级更高的缓存有效时间:

不缓存包含在field的响应header,可以设置的值有:“X-Accel-Redirect”, “X-Accel-Expires”, “X-Accel-Limit-Rate”,“X-Accel-Buffering”, “X-Accel-Charset”, “Expires”, “Cache-Control”, “Set-Cookie” (0.8.44), and “Vary”。
如果上述的header field没有设置为忽略,则header filed中有“X-Accel-Expires”, “Expires”, “Cache-Control”, “Set-Cookie”, and “Vary”的话,响应会被缓存。

该指令用于设置缓存的最小使用次数,默认值为1

源站有问题时,nginx可以通过proxy_cache_use_stale指令开启容错能力,即使用缓存内容来响应客户端的请求。举例如下:

如上配置表示,当作为cache的NGINX收到源站返回error、timeout或者其他指定的5XX错误,并且在其缓存中有请求文件的陈旧版本,则会将这些陈旧版本的文件而不是错误信息发送给客户端。

使用NGINX,不需要建立一个RAID(磁盘阵列)。如果有多个硬盘,NGINX可以用来在多个硬盘之间分割缓存。举例如下:

在这份配置中,使用了3个独立的缓存,每个缓存专用一块硬盘,另外,3个独立的线程池也各自专用一块硬盘。

缓存之间(其结果就是磁盘之间)的负载均衡使用split_clients模块,split_clients非常适用于这个任务。
在 proxy_cache_path指令中设置 use_temp_path=off ,表示NGINX会将临时文件保存在缓存数据的同一目录中。这是为了避免在更新缓存时,磁盘之间互相复制响应数据。

通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;
通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。
因此,将日志好好利用,你可以得到很多有价值的信息。

打开nginx.conf配置文件:vim /usr/local/nginx/conf/nginx.conf
日志部分内容:
#access_log logs/access.log main;
日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式。
默认“main”日志格式:

参数明细表:

查看日志命令tail -f /usr/local/nginx/logs/access.log

打开nginx.conf配置文件去掉#注释见下图:

自定义某一个server配置的日志,使用“main”日志格式。

日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式。

重新读取加载Nginx配置文件:

执行命令:nginx-s reload

网上一位老师写的log文件分解的脚本

此脚本执行时间根据自己公司情况来定,可以设置默认一天执行一次;

创建crontab设置作业

设置日志文件存放目录crontab -e

*/1 * * * * sh /usr/local/software/nginx/nginx_log.sh
此设置的为一分钟,如果设置一天自行修改;

默认的 nginx 配置文件 nginx.conf 内容如下

示例

几个常见配置项:

注意:

惊群现象:一个网路连接到来,多个睡眠的进程被同事叫醒,但只有一个进程能获得链接,这样会影响系统性能
每个指令必须有分号结束。

进入安装目录下的sbin

❹ nginx如何使用

使用nginx+php一键安装包phpfind或phpstudy,超级方便,纯中文绿色解压即可。自动配好php+nginx。带控制面板的。phpfind大小只有16m

❺ linux如何使用nginx启动怎么使用

你好,启动方法如下:
执行命令: ps -A | grep nginx
如果返回结果的话,说明有nginx在运行,服务已经启动

❻ 如何安装nginx

方法/步骤
1
安装nginx前,我们首先要确保系统安装了g++、gcc、openssl-devel、pcre-devel和zlib-devel软件,可通过如图所示命令进行检测,如果以安装我们可以通过图二所示卸载

2
我们一般安装linux软件都会在/usr/local目录下,然后进行解压编译安装,具体的命令大家请看图片所示

3
等待配置和编译完成,完成后我们就需要配置防火墙,不拦截80端口,设置完成后需要重启防火墙

4
接下来介绍下启动/停止/重启的具体方法,进入目录后我们可以用执行sbin/nginx来启动,也可以通过conf/nginx.conf来启动,停止我们可以查询进程使用kill -9 进程号/pkill -9 nginx来结束nginx服务,重启可以通过 sbin/nginx -s reload来重启,具体命令大家请看如图所示

5
下面来说说基本的操作命令,
nginx -h #帮助
nginx -v #显示版本
nginx -V #显示版本和配置信息
nginx -t #测试配置
nginx -q #测试配置时,只输出错误信息
nginx -s stop #停止服务器
nginx -s reload #重新加载配置
然后请看图片所示conf文件的配置,来配置nginx的方法

6
好了,这个就完成了,大家看看我的效果吧

❼ 如何安装nginx

nginx
windows版
v1.13.3免费版http://www.ddooo.com/softdown/29113.htm
nginx
windows安装配置方法
第一步、安装方法
一、下载好后,把nginx
windows版软件解压到c盘根目录。
二、双击nginx.exe图标,可见黑窗口一闪而过,启动完毕。
三、按下win+R快捷键,输入cmd打开命令行。
四、命令行到nginx目录,输入nginx启动。(注,此方式命令行窗口无任何提示,且被锁定)
五、打开浏览器,输入http://127.0.0.1,如果看到下图片则安装成功。
六、以后启动软件直接双击图标即可。
七、启动后,默认情况下(无修改配置),可见到有两个nginx的进程,一个是master
process,一个是worker
processes测试。
第二步、配置方法
配置目标:能正常运行PHP脚本程序
大部分情况下,我们需要修改的配置文件只有一个,那就是nginx.conf,该文件位于conf目录下。具体配置项目为:
1.
server_tokens
off;
出于安全方面的考虑,最好是隐藏nginx版本号信息
2.
listen
8088;
8088为监听端口,根据需要可以填写其它端口号
3.
server_name
localhost;
localhost为服务器访问名称,也就是我们在浏览器里输入的那个url地址
4.
charset
utf-8;
字符集编码
5.
工作目录
将如下配置
修改为:
root
定义了工作空间,也就是我们php项目所在的目录。
加入index.php是为了让nginx能够识别php脚本,否则,在访问php文件时,会出现直接下载的情况。
6.
整合php
将location
~
\.php配置部分的注释全部去掉,最终配置如下:
注意这里面的$document_root变量,它对应的内容就是root参数值,如果我们没有定义root参数或者把root注释掉,在访问php的时候,页面上就会出现No
input
file
specified.提示。
7.
启动php-cgi
打开cmd命令窗口,切换到php的安装目录,执行php-cgi
-b
127.0.0.1:9000,即可启动php-cgi,启动完成后,cmd窗口切勿关闭,否则php-cgi也会被关掉的。
特别提醒:只有在开启php-cgi的情况下,nginx才能正常访问php。
8.
重启nginx
打开cmd命令窗口,切换到nginx所在目录,执行nginx
-s
reload即可重启nginx。其它相关nginx相关命令如下:
启动:start
nginx
停止:nginx
-s
stop
退出:nginx
-s
quit

❽ nginx重启几种方法

平滑重启命令:
kill -HUP 住进称号或进程号文件路径
或者使用
/usr/nginx/sbin/nginx -s reload
注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。
判断Nginx配置是否正确命令如下:
nginx -t -c /usr/nginx/conf/nginx.conf
或者
/usr/nginx/sbin/nginx -t
nginx reload重启
执行
# /usr/local/nginx/sbin/nginx -s reload
nginx已经重启成功
Centos nginx重启
重启Nginx
service nginx restart
/etc/init.d/nginx stop
/etc/init.d/nginx start
Ubuntu Nginx
$sudo service nginx start
$sudo service nginx stop
win7
启动
解压至c:\nginx,运行nginx.exe(即nginx -c conf\nginx.conf),默认使用80端口,日志见文件夹C:\nginx\logs
常用配置
C:\nginx\conf\nginx.conf,使用自己定义的conf文件如my.conf,命令为nginx -c conf\my.conf

❾ nginx启动命令和停止命令

Nginx是一种免费的,开源的,高性能HTTP和反向代理服务器,负责处理Internet上一些最大站点的负载。
它可以用作独立的Web服务器,也可以用作Apache和其他Web服务器的反向代理。
如果您是开发人员或系统管理员,则很可能会定期与Nginx打交道。使用NginxWeb服务器时,启动,停止以及重新启动/重新加载是最常见的任务。今天我们将说明如何在Linux服务器上启动,停止和重新启动Nginx。
先决条件:
访问终端窗口或命令行
具有sudo或root特权的用户帐户
与远程系统的现有SSH连接(如果您正在远程工作)停止Nginx服务的四种方法。

❿ CentOS7中使用yum安装Nginx的方法

1、添加源

Nginx官网提供了Centos的源地址。执行命令添加源:

2、安装Nginx

通过yum search nginx看看是否已经添加源成功。如果成功则执行下列命令安装Nginx。

3、启动Nginx并设置开机自动运行

结束----就这么简单

阅读全文

与nginx使用方法相关的资料

热点内容
快速查询个人征信的方法 浏览:804
男士冬天洗衣服的方法如何 浏览:729
农业产品研究方法 浏览:15
驯服蜥蜴最简单的方法 浏览:702
淘宝钻展怎么操作干货方法推荐 浏览:72
临床上最广泛的研究方法 浏览:467
避孕方法有哪些怎么上环 浏览:868
电热板安装方法 浏览:170
中医治疗丝状疣的方法 浏览:711
正确梳头的方法免费学 浏览:89
斜齿轮的计算方法 浏览:331
如何写好行草方法 浏览:495
食用方法可以分为什么和什么 浏览:166
老伴按摩床使用方法 浏览:854
原始蜂蜜怎么食用方法 浏览:18
研究方法名词解释333 浏览:506
腿部伸展机使用方法 浏览:109
健腹轮训练正确方法 浏览:783
qq同步助手短信功能在哪里设置方法 浏览:929
风险识别分析方法培训 浏览:929