Articles of nginx

如果独angular兽重载并返回502,nginx可以重试吗?

在将502返回给客户端之前是否有可能让nginx重试第二个后端? 会这样的工作吗? 前端: # haproxy:85 => [a few app servers]:8000 # more specifically: # haproxy => [nginx => unicorn (502 when busy)] # Will this try a second app server when the first returns 502? upstream haproxy { server 127.0.0.1:85; server 127.0.0.1:85 backup; } server { listen 80; proxy_pass http://haproxy; proxy_next_upstream http_502; } 后端: upstream […]

查找导致随机502网关错误的Nginx / PHP-FPM瓶颈

我在一个相当繁忙的互联网站点工作,这个站点通常会遇到非常大的stream量高峰。 在这些峰值期间,每秒钟会有数百页的请求,并产生随机的502网关错误。 现在我们在带有16个核心CPU和24GB DDR3 RAM的4个SAS 15k驱动器(raid10)的机器上运行Nginx(1.0.10)和PHP-FPM。 我们也使用最新的Xcache版本。 数据库位于另一台机器上,但是这台机器的负载很低,没有问题。 在正常的负载下,一切运行良好,系统负载低于1,并且PHP-FPM状态报告一次不会真正显示超过10个活动进程。 总是有大约10GB的内存仍然可用。 在正常的负载下,机器每秒处理大约100个综合浏览量。 当出现巨大的stream量峰值时,就会出现这个问题,并且要求机器每秒钟处理数百页的视图。 我注意到,FPM的状态报告显示了多达50个活动进程,但仍低于我们configuration的最大连接数300个。 在这些峰值期间,Nginx状态报告多达5000个活动连接,而不是正常的平均值1000。 OS信息:CentOS 5.7版(最终版) CPU:Intel(R)Xeon(R)CPU E5620 @ 2.40GH(16核心) PHP-fpm.conf daemonize = yes listen = /tmp/fpm.sock pm = static pm.max_children = 300 pm.max_requests = 1000 我还没有设置rlimit_files,因为据我所知它应该使用系统默认,如果你不这样做。 fastcgi_params (只添加标准文件的值) fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors […]

Nginx中的proxy_pass uri中的主机名的正则expression式

我想做一些事情: server_name ~^(www\.)?(?<subdomain>[^.]+).example.org$; location / { proxy_pass "http://example.org:8080/$subdomain"; }

木偶代理木偶大师(在nginx / ruby​​1.9上运行)SSL证书问题

我有两台机器,木偶大师 – 主机名puppet – 和一个孤独的客户端,主机名git 。 主机上的木偶代理没有问题。 git上的代理程序失败,出现'400没有发送必需的SSL证书'。 首先,木偶大师的configuration,这是一个瘦/ nginx事件: puppet:~# ruby -v ruby 1.9.2p0 (2010-08-18 revision 29036) [i486-linux] puppet:~# puppet –version 2.7.9 puppet:~# cat /etc/nginx/sites-enabled/default server { listen puppet:8140; ssl on; ssl_certificate /var/lib/puppet/ssl/certs/puppet.pem; ssl_certificate_key /var/lib/puppet/ssl/private_keys/puppet.pem; ssl_ciphers ALL:-ADH:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP; ssl_client_certificate /var/lib/puppet/ssl/ca/ca_crt.pem; ssl_verify_client on; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Client-Verify […]

IE / wget的问题将子域的SSL证书与主域的证书混淆

我正在运行一个网站 ,使用Comodo EV证书对结帐stream程进行SSLauthentication。 我们还在整个网站上进行了Piwik网站分析跟踪,这是在一个stats子域中提供的。 为了防止混合域错误,Piwik可以通过HTTPS和HTTP访问 – 对于HTTPS,我们的Piwik子域使用(便宜得多)的Comodo PositiveSSL证书进行authentication。 这是奇怪的部分 – 当通过wget和某些版本的Internet Explorer访问主站点上的HTTPS页面时, stats.psychicbazaar.com证书似乎以某种方式被错误加载,导致IE中的“不匹配地址”警告,以及在wget: ERROR: certificate common name `stats.psychicbazaar.com' doesn't match requested host name `www.psychicbazaar.com'. 这个问题不会发生在curl,Chrome或Firefox上。 例如,curl: $ curl -Iv https://www.psychicbazaar.com/shop/checkout * <snip> * Connected to www.psychicbazaar.com (178.79.183.162) port 443 (#0) * successfully set certificate verify locations: * CAfile: none CApath: /etc/ssl/certs * SSLv3, TLS handshake, […]

不能写入nginx www文件夹

我最近在Ubuntu 12.04的开发机器上安装了nginx。 我目前以myuser身份login,在安装nginx后,我设置了以下文件权限(nginx www文件夹属于root用户,所以我想改变它,以便用myuser编辑文件): # add myuser to nginx group sudo usermod -a -G www-data myuser # change ownership for www folder to nginx user (www-data) chown -R www-data:www-data /usr/share/nginx/www chmod -R 775 /usr/share/nginx/www 然后我去/ usr / share / nginx / www并尝试创build一个新的文件夹/文件。 我总是获得权限被拒绝。 以下是该文件夹的列表: drwxrwxr-x 2 www-data www-data 4096 Apr 29 11:01 . drwxrwxr-x 3 […]

所有的PHP文件都很慢 – 没有服务器负载

我正在使用Nginx + PHP5-FPM,并且通过端口80加载的所有PHP文件都非常慢 – 它们需要几分钟才能加载,即使是一个简单的phpinfo文件。 php -i over shell非常快,而且服务器本身非常强大,负载非常低。 我也尝试了Apache和Litespeed,结果与Nginx相同。 扁平的HTML文件也非常快。 这是自停电和硬重启之后发生的。 有没有人有任何想法,为什么这个服务器可以如此缓慢的PHP文件处理?

如何configurationGlassfish + NGINX使用NGINX提供静态文件?

Glassfish v3 + Nginx设置的EC2 ubuntu托pipe我的Java Web应用程序。 此应用程序作为WAR文件部署到Glassfish。 NGINX目前将所有的请求都传递给了glasshfish应用服务器,包括静态图像,CSS等等。 server { listen 80; server_name whatever.com www.whatever.com; access_log /var/log/nginx/whatever.com.access.log; location / { proxy_pass http://127.0.0.1:8080/javapp/; proxy_pass_header Set-Cookie; proxy_pass_header X-Forwarded-For; proxy_pass_header Host; } }

nginx&php-fpm和自定义标题

我想从客户端RESTful应用程序(JS)传递一些自定义标题(ACCESS_TOKEN)到应用程序服务器(php-fpm)。 我读过nginx应该通过所有的http头到PHP,但不知何故,它不来我的PHP 🙁 我可以看到它在萤火虫http://o7.no/N6DM7q,但不能在$ _SERVERvariables中看到它。 它只是不存在于$ _SERVER数组中。 我想我需要手动通过它。 现在我的configuration如下所示: location @php-fpm { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_param REQUEST_URI /index.php$request_uri; fastcgi_param SCRIPT_FILENAME /htdocs/index.php; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param DOCUMENT_ROOT /htdocs; } } 当我在位置定义中添加新行时: location @php-fpm { include /etc/nginx/fastcgi_params; … fastcgi_param ACCESS_TOKEN $http_access_token; } } 或者即使我将它添加到fastcgi_params文件它不会帮助:( 如果我把位置部分放在下一行: fastcgi_param ACCESS_TOKEN $http_access_token; 然后在PHP中它有空值:( 我怎么可以通过nginx将自定义标头从客户端传递到后端(PHP)?

Nginx Mod重写 – 将* .png重写为* .php

我在Nginx重写中遇到问题 目前我的规则如下所示 重写^ / i /(.*?)$ /i/$1.php最后; 基本上我想要做的是将所有.png文件redirect到/ i目录中的.php文件。 但是,看来这个$必须是最后的,所以我不能这样做 重写^ / i /(.*?)$。png /i/$1.php最后; 有没有人有任何解决scheme? 谢谢Ben