Articles of nginx

nginx发送不完整的响应

如果没有重新启动或修改configuration,nginx有时会发送不完整的响应。 今天,我可以复制,但仍然不知道什么是错的或如何修复。 我把一个5MB的文件放到nginxconfiguration使用的站点的位置/别名path。 没有php5-fpm,模块等只有nginx提供静态文件。 testing时,没有其他用户访问服务器,除我的testing请求外没有其他用户访问。 下载失败,谷歌浏览器在stream量日志中显示,有2个请求,虽然我只把下载的http url放在一次,没有我自己发起的redirect或其他第二个请求。 同样的问题在服务器的access.log,也是如此: TEST1 [14 / May / 2014:14:06:53 +0200]“GET /dev/test_test.m4v HTTP / 1.1”206 1“ – ”“Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36壁虎)Chrome / 32.0.1700.107 Safari / 537.36“ [14 / May / 2014:14:06:53 +0200]“GET /dev/test_test.m4v HTTP / 1.1”200 130680“ – ”“Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36 Gecko)Chrome […]

谷歌机器人旅行在一个完全正常的robots.txt,然后在一个不存在的robots.txt

我有两个域名指向同一个虚拟服务器。 其中之一, http://ilarikaila.com ,是我为朋友制作的工作手册网站。 我使用另一个http://teemuleisti.com在公开之前对网站进行testing – 回想起来,这可能是个坏主意。 很长一段时间,Google-bot在两个方面对于search“ilari kaila”感到困惑,但是当我写这个的时候,第二个问题似乎已经消失了( 编辑时加上:不,它没有)。 混淆第一 “ilari kaila”的Googlesearch结果中包含ilarikaila.com,但仅包含结果的第三页,而不是来自网站的摘录,结果中包含文字“此结果的描述不可用,因为这个网站的robots.txt – 了解更多。“ robots.txt文件的内容很简单 User-agent: * Allow: / 这当然不应该阻止任何机器人列出网站的内容。 事实上,当serge的术语“ilari kaila”被送入bing.com时 ,该网站就成为第一个search结果(和stlil),并且显示了一个正确的片段。 几天前,我完全删除了robots.txt (或更名为not_robots.txt ),但Google仍然显示相同的结果,指的是robots.txt。 (这可能是网站只出现在search结果的第三页上的原因。) 混淆第二 最初,对teemuleisti.com的请求显示与ilarikaila.com相同的页面,因为我没有为我的nginx.conf文件中的前者编写单独的server块。 几个星期前,我做了这个,为前一个网站写了一个非常简单的HTML页面。 尽pipe如此,谷歌search“ilari kaila”的search结果甚至在我进行前两个星期之前,甚至一个小时之前,也显示了与teemuleisti.com网站的链接。 然而,这个问题似乎已经解决( 编辑时添加:不,它没有),当我写这个问题,也许是因为我只是添加了以下redirect到服务器的nginx.conf文件: server { listen 80; server_name teemuleisti.com www.teemuleisti.com; … location = /index.html { break; } location ~* ^/(.+)$ { rewrite ^ […]

Nginx的代理SOAP请求

寻找一个正确的方法来完成以下任务: 有一个应用程序具有URL(1)硬编码,没有任何方式/时间来改变它的来源 http://dev.server.com/example.com/admin/soap/action/index?pr=1 它应该使用(并获得响应)URL(2) http://example.com/admin/soap/action/index?pr=1 我应该在dev.server.com上configurationNginxconfiguration(apache作为备份使用),以便在从URL(2)询问URL(1)答案时给予该应用程序? 在dev.server.com Apache有虚拟主机:启用dev.server.com。 此外,我已经尝试通过使用ProxyPass在apache而不是nginx中进行代理: <Directory /var/www/dev> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all </Directory> <Location /example.com/admin/soap> ProxyPass http://example.com/admin/soap </Location>

我可以通过https pass_proxy吗?

是否有可能在我的本地 nginx.conf中有这样的东西? pass_proxy https://mybackend.com:443; 如果不是 ,我如何使我的本地nginx请求,并通过SSL返回我的远程后端API?

Phalcon不会在nginx和php5-fpm下加载

我试过把extension=/usr/lib/php5/20121212/phalcon.so放到/etc/php5/fpm/php.ini ,当它不起作用时,我把它放到/etc/php5/cli/php.ini以及那个时候也不起作用,我终于把它放到/etc/php5/mods-availavle/phalcon.ini ,但它仍然不起作用。 每次更改后,我都重新启动了php5-fpm和nginx。 我也尝试过和没有path 我在Ubuntu 14.04,但我有12.04相同的问题

NGINX中的可选url段

我需要代理将多个段进一步传递给另一个服务器,最多可以有两个5段。 nginx需要匹配什么 example.com/somehash example.com/somehash/segment1 example.com/somehash/segment1/segment2 example.com/somehash/segment1/segment2/segment3 example.com/somehash/segment1/segment2/segment3/segment4 example.com/somehash/segment1/segment2/segment3/segment4/segment5 现在,代码如下,只匹配 example.com/somehash example.com/somehash/segment1 为此,我们有这样的代码块: location ~* ^/([a-z0-9]+)/?$ { proxy_pass http://@tds/direct/$1?$args; proxy_set_header Referer $http_referer; proxy_set_header X-Original-Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_redirect off; } location ~* ^/([a-z0-9]+)/([A-Za-zА-Яа-я0-9\-\_\[\]\{\}\.]+)/?$ { proxy_pass http://@tds/direct/$1/$2?$args; proxy_set_header Referer $http_referer; proxy_set_header X-Original-Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header […]

如何configurationNginx与SMTP服务器通信?

我是一名应用程序开发人员,对系统pipe理员/服务器configuration任务知之甚less。 我有一个nginx服务器通过VPS上的uWSGI与Flask Web应用程序通信。 我正在尝试连接到Google SMTP以将邮件发送给我的注册用户。 Python代码都在我的本地主机上工作,但我不知道如何configurationnginx与Google SMTP进行通信。 经过一番研究,我已经遇到了nginx_mail_core模块,并且在nginxconfiguration中有一些“邮件”模块 – 但是大部分是相当陌生的。 如果它确实是一个邮件块,我需要configuration,一个例子将不胜感激。 这是我目前的nginxconfiguration文件: worker_processes 1; events { worker_connections 1024; } http { sendfile on; gzip on; gzip_http_version 1.0; gzip_proxied any; gzip_min_length 500; gzip_disable "MSIE [1-6]\."; gzip_types text/plain text/xml text/css text/comma-separated-values text/javascript application/x-javascript application/atom+xml; upstream uwsgicluster { server 127.0.0.1:8080; } # Configuration for Nginx server { # […]

所有Passenger进程突然挂起 – 回溯指示读取POST数据?

我一直有我的nginx / Passenger服务器的问题,其中请求似乎卡住,任何后续请求不完成,队列达到其最大值,该网站开始投放503s。 我必须重新启动nginx才能重新开始。 当问题发生时,乘客状态就是这样说的: Version : 4.0.37 Date : 2014-05-29 18:02:57 +0000 Instance: 18354 ———– General information ———– Max pool size : 4 Processes : 4 Requests in top-level queue : 0 ———– Application groups ———– /home/www/mysite#default: App root: /home/www/mysite Requests in queue: 100 * PID: 19495 Sessions: 1 Processed: 158 Uptime: 9m 23s […]

通过千兆networking提高TCP性能存储和stream媒体服务的连接数量和stream量都很高

我有两台服务器,两台服务器的硬件规格都是 Processor : Dual Processor RAM : over 128 GB Hard disk : SSD Hard disk Outging Traffic bandwidth : 3 Gbps network cards speed : 10 Gbps 服务器A:用于编码video 服务器B:通过networking界面( 如YouTube)存储video和stream媒体video 两台服务器之间的入站带宽为10Gbps,出站带宽为500Mbps 这两个服务器在公共和专用networking中使用公共IP地址 这两个服务器在nginx端口上传输和连接,而服务器B用于stream媒体,如youtubestreamvideo 两台服务器在同一networking中,当我从服务器A ping到服务器B我得到高于1.0ms的高时间延迟,时间范围时间= 52.7毫秒到时间= 215.7毫秒 – 这是iftop实用程序的输出 353Mb 707Mb 1.04Gb 1.38Gb 1.73Gb mqqqqqqqqqqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqqqqqqqqqq server.example.com => ip.address 6.36Mb 4.31Mb 1.66Mb <= 158Kb 94.8Kb […]

如果服务器不可用,如何使Nginx能够立即启动504?

我把Nginx设置为一个基于cookie的粘性负载均衡器。 逻辑是: 如果cookie不在那里,请使用round-robbing从集群中select一个服务器。 如果该cookie存在,请转到与该cookie值关联的服务器。 服务器然后负责设置cookie。 我想补充的是这样的: 如果cookie存在,但服务器closures,则回退到select下一个可用服务器的循环步骤。 所以实际上我有负载平衡,并希望添加故障转移支持。 我设法通过error_page指令来实现这个function,但是它不能像我预期的那样工作。 问题: 504(和与之相关的回退)仅在30s超时后才会触发,即使服务器不可用。 所以我想要Nginx做什么是立即(当然,这意味着:当TCP连接失败)发射504(或任何其他错误,无所谓)。 这是我们在浏览器中可以看到的行为:如果我们在服务器closures时直接进入服务器,浏览器会立即告诉我们无法连接。 此外,Nginx似乎正在为502错误做这件事:如果我故意错误地configuration我的服务器,Nginx会立即触发502。 configuration (精简到基本): http { upstream my_cluster { server 192.168.73.210:1337; server 192.168.73.210:1338; } map $cookie_myCookie $http_sticky_backend { default 0; value1 192.168.73.210:1337; value2 192.168.73.210:1338; } server { listen 8080; location @fallback { proxy_pass http://my_cluster; } location / { error_page 504 = @fallback; # […]