我目前正在使用nginx来反向代理请求从长期轮询到上游的Web客户端。 由于我们正在进行长轮询(而不是websockets),所以当客户端连接时,它会以串行方式与服务器build立多个http连接,每次服务器发送一些数据时重新build立一个连接(或者超时,确定服务器无话可说10秒)。 我想要做的是限制并发的Web客户端的数量。 由于客户端不断地发出新的HTTP请求,而不是保持单个请求的打开,所以计算Web客户端的总数(因为与并发连接的http客户端的总数不相同)是有点棘手的。 我想到的方法是跟踪起始IP地址的http请求,并将IP地址存储在TTL为20秒的地方。 如果一个请求的IP地址不被识别,那么我们检查未过期的存储IP地址的总数; 如果这小于最大值,那么我们允许通过这个请求。 如果一个请求带有一个IP地址,我们可以在查找表中find一个尚未过期的IP地址,那么这个IP地址也可以通过。 所有允许通过的请求都将其IP添加到表中(如果不存在),并且TTL再次刷新为20秒。 实际上,我用nginx和Redis 2.0 Nginx模块 (以及nginx lua模块来简化条件分支),使用redis来存储我的IP地址和TTL( SETEX命令),这样一来,用DBSIZE命令检查表的大小。 这工作,但performance是可怕的。 nginx和redis结束了使用大量的CPU,机器只能处理less量的并发请求。 在1.5版本中添加到Haproxy(通过serverfault提供的一个佣金 )的新的stick-table和跟踪计数器似乎是实现这种限速的理想select,因为粘贴表可以跟踪IP地址并自动过期条目。 但是,我没有看到一个简单的方法来获得棒表中未到期条目的总数,这将是必要的知道连接的Web客户端的数量。 我很好奇,如果有人有任何build议,对于nginx或haproxy,甚至没有提到的其他东西,我还没有想到。
嘿,我想知道什么是一些一般的选项,我应该考虑优化nginx服务器大文件下载(通常100MB到6GB)。 我刚刚从lighttpd移植过来,我注意到在下载过程中,速度很快波动很大。 我熟悉波动的速度,但不是在这个速度,lighttpd没有几乎波动。 我想知道是否有一些一般的东西,我应该看看,对nginx是新的。 我应该增加工人数量等 我正在浏览HttpCoreModule的wiki页面,并且发现了诸如directio选项之类的东西: 该指令允许使用标志O_DIRECT(FreeBSD,Linux),F_NOCACHE(Mac OS X)或directio()函数(Solaris)读取大小超过指定大小的文件。 该指令禁止将sendfile用于此请求。 这个指令可能对大文件有用 那会是一个尝试的select吗? 感谢球员,我感谢帮助。 我知道我的问题可能相当广泛,但就像我刚才所说的,对于nginx新手我想知道我可以用什么样的选项来优化服务器以进行文件下载。 我知道各种各样的东西起作用,但是我也知道lighttpd在同一台服务器上的波动并不多。 谢谢!
我正在使用ab命令来打我的本地主机的http请求。 现在在服务器端,我想检查有多less请求目前正在处理我的nginx服务器。 像在数据库的情况下,我们可以检查由任何应用程序做的数据库连接列表…. 同样的方式如何检查…..
在apache中有一种方法来限制可以在某个月查看网站的用户数量吗? 我需要为个人虚拟主机做这个。 有些东西是: <VirtualHost *:80> ServerName website.com DocumentRoot "/var/www/website.com/public" **MONTHLY_USER_LIMIT** = 5000 </VirtualHost> Apache中有没有这样做(或Nginx的)? 谢谢!
我想在NGINX中使用别名函数来完成一些简单的事情。 我在过去的3天里search了互联网,发现只有不好的或过时的例子,希望有人可以发布一个基于新版本NGINX的工作示例。 我有以下url: http://mysite.com/ username_123 我的问题是如何使NGINX将此请求转发到内部用户文件夹: html / profiles / username_123 …并返回其index.php页面? 请记住,这个index.php页面被传递到监听127.0.0.1:9000的php FastCGI服务器
免责声明:在任何人明智地提到谷歌(或类似的)之前,我只想指出,我提出这个问题,因为我找不到一篇文章或我喜欢的文章。 前言: Amazon EC2微型实例(VPS)与Ubuntu 10.10服务器 + nginx + php-fpm + WordPress 。 题: 显然没有正确或错误的答案,但尽pipe如此, 给我的堆栈,你会推荐什么目录结构&&文件用户/组权限? 当然,安全始终是一个问题,所以理想的结构/权限不会有安全风险(例如:chmod 777 wp-content),但也应该没有问题(将图像上传到wp-content,插件)。 另外,请记住,我们正在处理Nginx而不是Apache。 我已经尝试了很多解决scheme,但到目前为止我还没有一个解决scheme。 希望得到一些更好的想法!
连接完成后,ngnix不closures套接字。 我GOOGLE了,不能拿出任何东西来告诉nginxclosures这个连接,除了我下面的:keepalive_timeout 0。 在请求和响应头文件中,我可以看到Connection:close,但是socket仍然处于TIME_WAIT状态大约一分钟。 tcp 0 0 127.0.0.1:80 127.0.0.1:40345 TIME_WAIT – 这是标题: Request Headers:Connection:close Content-Type:application / x-www-form-urlencoded 响应标头:HTTP / 1.1 200 OK服务器:nginx / 0.7.67date:2011年4月21日星期四15:34:31 GMT内容types:text / xml; charset = utf-8传输编码:分块连接:closures 我的nginxconfiguration的一部分: nginxconfiguration文件:{… keepalive_timeout 0; client_max_body_size 1M; fastcgi_read_timeout 60; fastcgi_send_timeout 60; location ~ \.php$ { fastcgi_pass unix:/tmp/php-fastcgi.sock; #fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_intercept_errors on; # to support […]
目前我正在使用Nginx将请求代理到运行Sinatra应用程序的Unicorn服务器。 应用程序只定义了几条path,这些path对PostgreSQL数据库进行相当简单的(非昂贵的)查询,最后以JSON格式返回数据,这些服务都由上帝监视。 我目前正在经历从这个应用程序服务器响应时间非常缓慢。 我有另外两个通过Nginx代理的Unicorn服务器,而且这些服务器的响应非常好,所以我认为我可以排除Nginx中的任何错误。 这是我的上帝configuration: # God configuration APP_ROOT = File.expand_path '../', File.dirname(__FILE__) God.watch do |w| w.name = "app_name" w.interval = 30.seconds # default w.start = "cd #{APP_ROOT} && unicorn -c #{APP_ROOT}/config/unicorn.rb -D" # -QUIT = graceful shutdown, waits for workers to finish their current request before finishing w.stop = "kill -QUIT `cat #{APP_ROOT}/tmp/unicorn.pid`" w.restart […]
如何使nginx代理php在所有内核上均匀加速。 当我试图强调testingconfiguration时,Top显示仅使用2个内核。 Cpu0 : 62.6%us, 14.9%sy, 0.0%ni, 18.5%id, 0.3%wa, 0.0%hi, 3.6%si, 0.0%st Cpu1 : 57.1%us, 11.0%sy, 0.0%ni, 31.2%id, 0.0%wa, 0.0%hi, 0.7%si, 0.0%st Cpu2 : 1.3%us, 0.7%sy, 0.0%ni, 97.0%id, 0.0%wa, 0.0%hi, 1.0%si, 0.0%st Cpu3 : 2.0%us, 1.7%sy, 0.0%ni, 95.7%id, 0.0%wa, 0.0%hi, 0.7%si, 0.0%st 我有 worker_processes 20; 在nginx.conf中设置 快速启动cgi spawn-fcgi -s /tmp/php.sock -f /usr/sbin/php -u nobody -g […]
我们目前有一个nginx服务器作为4-5个Apache服务器的后端代理运行。 我的问题是,在安装ssl证书后,我testingssl连接时出现以下错误:openssl s_client -connect xxx.xxxxxxxxx.xxx:443 | 更多 Verify return code: 21 (unable to verify the first certificate) SSL是通过RapidSSL购买的。对于SSL代理,nginx的configuration如下: server { listen 443 ssl; server_name _; access_log /var/log/nginx/ssl-access.log; error_log /var/log/nginx/ssl-error.log; ssl on; ssl_certificate ssl/wildcard-xxxxxxx.xx.xx.crt; ssl_certificate_key ssl/wildcard-xxxxxxx.xx.xx.key; keepalive_timeout 60; location / { proxy_pass https://backend; } } 我可以validation后端服务器返回ssl连接正常 Verify return code: 0 (ok) 如果任何人能够给我一个头或一个指出将不胜感激。 Thnx,David