我在ubuntu 14.04上使用 nginx版本 1.6.2
我试图通过引用nginx 文档来输入limit_conn和limit_req配置文件。
Nginx 在没有limit_conn和limit_req选项的情况下运行良好。
以下是带有日志消息的 nginx 配置测试用例。
我不知道我的代码有什么问题。
案例 1 - 完整配置
/etc/nginx/nginx.conf
http {
...
include /etc/nginx/sites-enabled/*;
...
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;
...
}
Run Code Online (Sandbox Code Playgroud)
/etc/nginx/sites-enabled/service.conf
server {
...
location / {
limit_conn conn_limit_per_ip 30;
limit_req zone=req_limit_per_ip burst=5 nodelay;
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
log message
unknown limit_req_zone "req_limit_per_ip" in /etc/nginx/sites-enabled/service.conf
Run Code Online (Sandbox Code Playgroud)
案例 2 -limit_req从启用站点的配置文件中删除
/etc/nginx/nginx.conf
http {
...
include /etc/nginx/sites-enabled/*;
...
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;
...
}
Run Code Online (Sandbox Code Playgroud)
/etc/nginx/sites-enabled/service.conf
server {
...
location / {
limit_conn conn_limit_per_ip 30;
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
log message
the size 10485760 of shared memory zone "conn_limit_per_ip" conflicts with already declared size 0 in /etc/nginx/nginx.conf
Run Code Online (Sandbox Code Playgroud)
案例 3 -limit_conn从启用站点的配置文件中删除
/etc/nginx/nginx.conf
http {
...
include /etc/nginx/sites-enabled/*;
...
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;
...
}
Run Code Online (Sandbox Code Playgroud)
/etc/nginx/sites-enabled/service.conf
server {
...
location / {
limit_req zone=req_limit_per_ip burst=5 nodelay;
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
log message
unknown limit_req_zone "req_limit_per_ip" in /etc/nginx/sites-enabled/service.conf
Run Code Online (Sandbox Code Playgroud)
案例 4 - 从启用站点的配置文件中删除所有内容
/etc/nginx/nginx.conf
http {
...
include /etc/nginx/sites-enabled/*;
...
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;
...
}
Run Code Online (Sandbox Code Playgroud)
/etc/nginx/sites-enabled/service.conf
server {
...
location / {
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
log message
[OK] - nginx reloaded well
Run Code Online (Sandbox Code Playgroud)
案例 5 - 删除limit_req_zone和limit_req
/etc/nginx/nginx.conf
http {
...
include /etc/nginx/sites-enabled/*;
...
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
...
}
Run Code Online (Sandbox Code Playgroud)
/etc/nginx/sites-enabled/service.conf
server {
...
location / {
limit_conn conn_limit_per_ip 30;
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
log message
the size 10485760 of shared memory zone "conn_limit_per_ip" conflicts with already declared size 0 in /etc/nginx/nginx.conf
Run Code Online (Sandbox Code Playgroud)
案例 6 - 删除limit_conn_zone和limit_conn
/etc/nginx/nginx.conf
http {
...
include /etc/nginx/sites-enabled/*;
...
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;
...
}
Run Code Online (Sandbox Code Playgroud)
/etc/nginx/sites-enabled/service.conf
server {
...
location / {
limit_req zone=req_limit_per_ip burst=5 nodelay;
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
log message
unknown limit_req_zone "req_limit_per_ip" in /etc/nginx/sites-enabled/service.conf
Run Code Online (Sandbox Code Playgroud)
合并/etc/nginx/sites-enabled/service.conf到/etc/nginx/nginx.conf. 换句话说,删除service.conf文件并server在nginx.conf文件的http块上粘贴块。这是代码。
/etc/nginx/nginx.conf
http {
..
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=2r/s;
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
..
server {
..
location / {
limit_req zone=req_limit_per_ip burst=5 nodelay;
limit_conn conn_limit_per_ip 30;
}
..
}
}
Run Code Online (Sandbox Code Playgroud)
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=2r/s + limit_req zone=req_limit_per_ip burst=5 nodelay
rate * burst以burst秒为单位设置最大请求数nodelay选项:Nginx 将返回 503 响应并且不处理过多的请求nodelay选项:Nginx 会等待(没有 503 响应)并处理过多的请求,但会有一些延迟limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m + limit_conn conn_limit_per_ip 30
| 归档时间: |
|
| 查看次数: |
25418 次 |
| 最近记录: |