Articles of nginx

nginx 502坏的网关 – fastcgi不听? (Debian 5)

我有nginx的经验,但它总是为我预先安装(通过VPS.net预先configuration的图像)。 我真的很喜欢它为我做了什么,现在我试图用apt-get将它安装在我自己的服务器上。 这是一个相当新的Debian 5安装。 我已经安装了一些额外的软件包,但他们都是.deb,没有手动编译或任何疯狂的事情。 Apache已经安装,但我禁用它。 我做了apt-get安装nginx并且工作正常。 尽pipe即将使用默认configuration,即使我要描述的问题也会发生,但是稍微改变了一下configuration。 我花了一段时间才发现nginx的默认debian软件包没有自动产生fastcgi进程。 这是相当蹩脚的,但我想出了如何使用这个脚本,我发现在许多不同的网站发布: #!/bin/bash ## ABSOLUTE path to the PHP binary PHPFCGI="/usr/bin/php5-cgi" ## tcp-port to bind on FCGIPORT="9000" ## IP to bind on FCGIADDR="127.0.0.1" ## number of PHP children to spawn PHP_FCGI_CHILDREN=10 ## number of request before php-process will be restarted PHP_FCGI_MAX_REQUESTS=1000 # allowed environment variables sperated by […]

Nginx有什么替代方法支持后端之间的http保持活动?

我最近问了一个关于如何使用Nginx保持后端连接持久性的问题,但是发现这是不可能的, 这是一个HTTP / 1.0代理,但没有保持活动请求的能力。 (因此,每个请求都会创build和销毁后端连接。) 它的工作现在一切正常(因为客户端和Nginx之间的连接保持活跃,结果是一样的),但我不想build立一个新的连接每一次收到一个新的请求,即使它是一个unix域套接字。 那么,你是否推荐完成这种连接的软件(最好是开放源代码而不是太繁琐的configuration)?

nginx错误页面和内部指令不能按预期工作

我想设置我的nginx服务器返回HTTP 50x状态代码上的特定错误页面,我希望这个页面不能被用户的直接请求(例如http // mysite / internalerror)所不可用。 为此,我使用nginx的internal指令,但我必须丢失一些东西,因为当我把这个指令放在我的/internalerror位置时,nginx返回一个自定义的404错误(甚至不是我自己的404错误页面)页面崩溃。 所以,总结一下,看来会发生什么: 回家 nginx将查询传递给Python 我正在模拟一个应用程序错误来获取502错误代码 nginx尝试从其error_page规则返回/ InternalError 由于internal规则,它最终失败回到自定义404错误代码< – 为什么? 该文件说error_page指令不关心internal : http : error_page 下面是nginx.conf的一个摘录,其中有一些注释可以指出: error_page 404 /NotFound; error_page 500 502 503 504 =500 /InternalError; # HTTP 500 Error page declaration location / { try_files /Maintenance.html $uri @pythonbackend; } location @pythonbackend { include uwsgi_params; uwsgi_pass unix:///tmp/uwsgi.sock; } location […]

使用nginx_mod_h264_streaming获取video文件的实际时间

我正在尝试设置一个伪stream媒体网站,通过nginx_mod_h264_streaming + JW播放器为h264video文件提供时间字幕。 字幕会自动转换为JW播放器可以读取的格式,这是一个PHP脚本,它将video中的观众当前位置放在一个类似XML的文件中,该文件带有字幕行和起始+结束时间戳,相对于哪里观众是。 然后,每当观看者加载stream媒体页面时,video就会自动search到相对于存储在MySQL DB中的开始时间的适当位置,并且字幕也被正确地向前search。 用户没有看到任何这个; 他或她只是在video的适当位置看到自己。 我的问题是,字幕时间戳必须非常准确,并且nginx_mod_h264_streaming只能查找video中最接近的关键帧,这相当频繁地偏离了用户应该查找的地方的大量时间。 我觉得这不是一个真正可以解决的问题, 如果要正确显示video,则只能真正寻找关键帧。 我想知道的是:有没有什么方法可以读取video实际查找的时间,或者甚至是关键帧编号,这样我至less可以正确显示字幕? 我无法在JW Player文档中find任何内容来表明这样做的方式; 如果其他玩家能够做到这一点,我会乐于接受。 非常感谢您的帮助!

CPU核心和工人/最大值服务器

我正在尝试优化我的apache和nginx安装,并且一直在寻找关于如何在Apache和Nginx的工作进程中设置正确数量或最小/最大服务器和连接的信息。 我想知道Apache和Nginx是否利用了多核处理器以及如何在Apache和Nginx中设置configuration? 例如,假设我有一个4核心处理器,我应该在nginx中将工作人员设置为4吗? 我应该在apache中设置备用服务器?

失败的请求使用Passenger之后502错误的网关错误

我有一个在Passenger 3.0.9下使用Rails 3.1运行nginx 1.0.5的临时服务器。 问题是,在发生应用程序错误的地方发送一个请求后,返回502 Bad Gateway 。 为了testing它,我设置了一个简单的控制器,其中一个动作就是引发一个虚拟的exception。 一个请求将显示Rails错误消息,下一个将显示nginx 502 Bad Gateway错误,然后返回到Rails应用程序错误等。 在调查这个问题时,我发现负载testing应用程序(增加了应用程序的数量)使得这个问题消失了。 这是直到额外的进程closures,然后重新出现。 我已经尝试设置passenger_min_instances选项,但这样做不会改变任何东西,并在这种情况下,每次发生应用程序错误时,一个实例被终止,而负载testing后,所有实例保持活着。 PS:我的团队中的一些人告诉我,他们已经看到了502错误,即使没有应用程序错误,但我还没有能够重现这一点。 更新 :刚刚发现如何显示使用ab的响应状态代码,其中大部分是502!

如何使用nginx PAM模块?

我想使用nginx PAM模块在FreeBSD系统上用现有的用户来authentication站点。 我试图使用pam_unix.so,但没有运气。 这只是让我在我的usr / psw对。 🙁 nginx conf: location / { root html; auth_pam "Secure Zone"; auth_pam_service_name "nginx"; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name; include fastcgi_params; } /usr/local/etc/pam.d的nginx文件dir: auth required pam_unix.so account required pam_unix.so 如果有人能告诉我一个可行的configuration,我将不胜感激。 🙂

Nginx的dynamic上行configuration/路由

我正在尝试使用nginx的dynamic上行configuration,并找不到任何好的解决scheme来实现来自第三方源(如redis或mysql)的上行configuration。 其背后的思想是在主服务器中有一个单独的文件configuration,并且根据环境条件对各种应用服务器发出代理请求。 想想dynamic部署,在这些部署中,有X服务器在不同端口上运行Y工作站。 例如,我创build一个新的应用程序和部署。 应用程序pipe理器select一个服务器,然后推出一个工作(Ruby / PHP / Python),然后将状态为“up”的ip:port报告给中央数据库。 在这个时候,当我去给定的urlnginx应该代理所有的请求到指定的IP:端口上游。 整个事情跟Heroku的做法非常相似,除了这个概念validation不应该是生产准备,主要是为了内部的需要。 我发现最简单的解决scheme是使用基于ruby的DNS服务器的parsing器。 它的工作原理,nginx获得正确的IP地址,但唯一的问题是,你不能定义该IP的端口号。 第二个解决scheme(我还没有尝试过)是将其他代码作为代理服务器,也许写在Erlang中。 在这种情况下,我们需要使用一些东西来提供静态内容。 任何想法如何以更灵活和稳定的方式来实现? PS一些研究选项: http://openresty.org/#DynamicRoutingBasedOnRedis https://github.com/nodejitsu/node-http-proxy

Nginx反向代理:Post_action如果代理caching命中 – Possbile?

我们最近发现了有关nginx的post_action 。 我们想知道是否有一种方法来使用这个指令,如果一个代理caching命中? 我们希望的stream程如下: 1) User request comes in 2) If cache HIT goto A / If cache MISS goto B A) 1) Serve Cached Result A) 2) post_action to another url on the backend B) 1) Server request from backend B) 2) Store result from backend 任何想法,如果这可能通过post_action或任何其他方法? 这背后的推理如下: 我们本质上是喜欢修改用户会话(php,但是相同的概念可以适用于大多数服务器端语言),同时显示caching的内容。 这将大大增加我们处理caching的请求的数量,因为这些请求只写入会话,而不是读取它们。 谢谢!

nginx是否有类似于Apache的<Directory>的指令?

我试图设置一个nginx服务器来取代我们基于Apache的当前设置。 我们的用户拥有密码保护的目录(在.htaccess文件中有指令),我们需要在新的设置中保护它们。 据我所见,nginx没有Directory指令,只有一个Location指令,指向URI而不是文件系统path。 这意味着如果一个目录可以通过多个URL访问。 我必须将它们全部包含在一个或多个位置指令中。 例如: domain.com, root: /home/user/public_html sub.domain.com, root: /home/user/public_html/sub 如果用户保护sub.domain.com/admin (目录/home/user/public_html/sub/admin ),我必须确保/admin sub.domain.com /sub/admin和domain.com中的/sub/admin都受到保护相同的密码文件。 我宁愿保护目录本身,而不是通过访问者访问其内容的URL。 那么,nginx是否有任何机制允许在configuration文件中引用文件系统path,比如Apache的<Directory>块呢,或者我只是误读了nginx的文档?