我在 Dreamhost VPS 上的 nginx 上启动并运行了我的网站。太棒了。我想通过在站点范围的 nginx conf 文件 (/dh/nginx/servers/httpd-psxxxxxx/nginx.conf) 的 http 块中添加以下内容来限制每个 IP 的连接数:
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn limit_per_ip 50;
重新加载 nginx 并且一切运行正常。
当服务器重新启动时,nginx 无法启动。我不得不再次转到 nginx 文件,注释掉有关限制每个 IP 的连接数的两行,重新加载 nginx,然后返回并再次取消注释这两行,然后重新加载 nginx。之后一切都正常了。
如果我在服务器重启后尝试手动重新加载 nginx,我会收到以下错误消息:
webserver... nginx: [emerg] zero size shared memory zone "limit_per_ip"
failed!
我做错了什么?我只想防止单个 IP 占用所有连接并导致 VPS 上的 RAM 超载,从而触发重启。
答案1
问题在于,您为区域命名addr
,但随后将其称为limit_per_ip
,而这并不是您选择的名称。
在指令中将区域名称从 更改为addr
,或者在指令中将区域名称从 更改为。limit_per_ip
limit_conn_zone
limit_per_ip
addr
limit_conn