Articles of nginx

绘制ab节点,聚类和nginx结果,奇数结果?

我用ab -n 10000 -c 1000对不同configuration的node.js进行了testing,每个都返回stringHello World! 。 结果对我来说似乎很奇怪。 X轴是请求的数量,y是以毫秒为单位的响应时间。 节点是单独的服务器 节点(集群)是使用cluster模块的服务器(双核) Nginx(平衡器)作为运行相同代码的(两个)节点实例前面的平衡器 第一件事是nginx太慢了,平衡器也是这三者中最差的。 直到1000个请求(比群集慢),它比单独的节点要好。 另一个奇怪的是节点单独有一个恒定的响应时间,直到〜7000(?)。 从约7000个请求开始,群集的响应时间大于节点,这似乎太奇怪了。 你会如何解释这些结果? 我做错了吗(长凳或绘图错误)? ApacheBench 2.3(1430300),Node.js 0.10.5,nginx 1.4.1。 在Xubuntu上运行13.04 x64。

CakePHP和WordPress上的Nginx PHP-FPM

我试图在同一台服务器上configurationCakePHP和一个WordPress的博客。 CakePHP在这里: http : //site.com/ WordPress的博客在这里: http : //site.com/blog/ 什么工作:整个CakePHP应用程序,并去/博客/。 什么不行:去/ blog / permalink /。 它提供了一个CakePHP 404页面。 / blog /可以使用或不使用下面的“#Blogconfiguration”。 我如何使/博客/永久链接/工作? 我习惯与Apache合作。 编辑:有人build议,我的问题是这篇文章的副本,但如果我使用该解决scheme或我的解决scheme(评论#博客configuration)下面给我一个CakePHP 404页面。 这意味着/ blog / permalink /不会击中wordpress的index.php。 upstream backend { server unix:/var/www/apps/appname/tmp/php.sock; } server { listen 80 default; root /var/www/apps/appname/public/app/webroot; index index.php index.html index.htm; server_tokens off; access_log /var/www/apps/appname/logs/access.log; error_log /var/www/apps/appname/logs/error.log; client_max_body_size 20M; rewrite_log […]

nginx中的条件variables设置

我正在写一个需要代理的nginxconfiguration,我需要原始的ip地址。 Nginx的HttpProxyModule的$proxy_add_x_forwarded_forvariables似乎完全适合于这个任务,除了我的Nginx是在一个负载均衡的后面设置的不是X-Forwarded-For ,而是X-Cluster-Client-Ip 。 现在,有一种可能会使用 set X-Forwarded-For $http_x_cluster_client_ip,$proxy_add_x_forwarded_for 但有时直接访问服务器,这将在头部留下一个逗号。 我想过if使用,但是这种情况if在if有问题的情况下使用。 请注意,因为客户端可能已经被代理了,所以我希望保留X-Forwarded-For头部中存在的任何数据(如果存在), 以及从X-Cluster-Client-Ip传递数据。 任何替代品?

nginx + fcgiwrap:fastcgi_param的顺序如何?

我正在运行Debian 6.0.3 ( squeeze ), nginx-0.7.67 , fcgiwrap-1.0-1+squeeze1 。 这里是testing脚本: #!/usr/bin/perl use 5.010; use warnings; use strict; use Data::Dumper; print "Content-Type: text/html\n\n"; say Dumper {map {$_ => $ENV{$_}} 'SCRIPT_NAME', 'DOCUMENT_ROOT', 'WHATEVER'}; say "$<, $>, $(, $)"; 这里是nginxconfiguration: server { server_name domain.com; root /home/yuri/6; access_log /var/log/nginx/domain.com-access.log; error_log /var/log/nginx/domain.com-error.log; location /cgi-bin/ { fastcgi_pass unix:/var/run/fcgiwrap.socket; fastcgi_param DOCUMENT_ROOT $document_root; […]

如果没有路由到主机,如何使nginx更早失败?

如果我的上游后端的port是closures的,通常nginx会很快失败并尝试另一个后端,在错误日志中我可以看到 连接()失败(111:连接被拒绝),同时连接到上游 如果我的上游后端没有连接到主机,那么nginx速度很慢(〜3秒),导致用户体验延迟,在错误日志中我可以看到 连接()失败(113:没有路由到主机),而连接到上游 那么,当nginx发现后端不可用时,可以减less3 seconds延迟?

在nxinx中依次尝试两个反向代理?

我想通过nginx反向代理服务器,并基于响应(例如, 4xx )将请求转发到第二个代理。 所以当一个请求进入时,nxinx把它传递给第一个。 如果第一个给出了一个非错误响应,那么它应该正常返回。 如果它返回一个错误,那么nginx应该把它发送到第二个并返回该响应。 从粗略的阅读文档,我不认为我可以通过configuration来做到这一点。 我可以写一个nginx扩展来做到这一点,但我想我会问,如果有可能没有编写额外的代码。

我怎样才能检查一个nginx模块是否通过nginxconfiguration安装?

我想要做的就是防止configuration段的无效指令在没有安装正确模块的nginx中运行。 像Apache中的IfModule指令( http://httpd.apache.org/docs/current/mod/core.html#ifmodule )。 在nginx中是否存在类似的东西?

新安装的nginx导致浏览器下载index.html而不是打开它

当我在Chrome, http://localhost:90查看这个文件时,该文件被下载而不是显示在Chrome中。 这个问题在SO上被问了很多次,但是关于索引。 PHP文件。 我的问题是一个简单的HTML文件,而不是一个PHP文件。 那还没有被问到。 我希望解决scheme是相似的,但我一直没能弄明白。 这是我的example.com.conf: server { server_name localhost; listen 90; root /var/www/example.com/html index index.html location / { try_files $uri $uri/ =404; } } 我的index.html文件只包含两个单词,没有标记 Hello World 我认为这是mime.types。 mime.types文件中有html的条目。 这是一个新鲜的nginx安装。 nginx -t报告“testing成功”

我可以让nginx在几秒钟后重新发送请求到FastCGI吗?

我的FastCGI(PHP-FPM)应用程序可能会遇到需要一些时间来自我修复的情况。 我想告诉nginx它应该等待几秒钟,然后重新发送请求到FastCGI后端。 我已经尝试了一个hacky安装,其中nginxconfiguration了fastcgi_next_upstream http_503 ( 请参阅文档 ),其中fastcgiconfiguration与上游相同: upstream php { server 127.0.0.1:9000; server 127.0.0.1:9000; } location ~ \.php(/|$) { fastcgi_pass php; fastcgi_next_upstream http_503 } 当PHP应用程序需要一些时间和空间的时候,它会回复503 ,使得nginx“向前移动”到显然是同一个服务器的下一个上游。 不幸的是,nginx以毫秒为单位进行第二次调用。 我想延迟nginx的第二个电话几秒钟,以确保PHP后端完全正常运行后,错误的情况。 那么,如何在第二次尝试之前添加适当的延迟? 在幕后,我需要回收整个PHP-FPM过程,因为MongoDB驱动程序如何处理副本集故障转移。 这就是为什么我无法在PHP级别完全处理这个案例,但是需要短时间释放PHP过程。

Nginx不输出正确的分块响应

我有一个expressjs在一些端点上做出部分回应的后端。 伪代码是这样的: function (req, res, next) { res.writeHead(200, { 'Content-Type': 'application/json' }); request.a.file(function response (middleChunk) { res.write(middleChunk); }, function final (endingChunk) { res.end(endingChunk); }); } 直接使用curl -v到expressjs实例就像一个魅力一样,逐步显示消息,最后是endingChunk ; 但是我没有直接在我的主机上使用expressjs,但是我使用了一个使用nginx制作的反向代理,它的configuration就是这样的: server { listen 80; server_name funnyhost; root /directory; location ~/api/.* { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_read_timeout 600s; proxy_buffering off; } } proxy_buffering off使服务器响应一些事情: ~$ curl -v […]