Articles of nginx

Nginx无法停止并且nginx.pid丢失

我想停止Nginx,但是它失败了。 $ sudo service nginx stop Stopping nginx: [FAILED] 而定义nginx.pid的地方的nginx.conf有一行。 # /etc/nginx/nginx.conf pid /var/run/nginx.pid; 但目录/var/run/没有nginx.pid 。 locate nginx.pid显示这个输出。 /var/run/nginx.pid /var/run/nginx.pid.oldbin 但更新之后,没有匹配的search。 我在CentOS release 6.5 (Final)使用了nginx / 1.4.4。 我该怎么做才能阻止nginx守护进程? 编辑2014/01/07 这是ps -ef | grep nginx输出 ps -ef | grep nginx ,看来nginx守护进程还在运行。 ironsand 17065 16933 0 15:55 pts/0 00:00:00 grep –color nginx root 19506 1 0 2013 […]

如何强制nginx每次在执行proxy_pass时parsingDNS(dynamic主机名的)?

我正在使用nginx / 0.7.68,在CentOS上运行,具有以下configuration: server { listen 80; server_name ***; index index.html index.htm index.php default.html default.htm default.php; location / { root /***; proxy_pass http://***:8888; index index.html index.htm; } # where *** is my variables proxy_pass是IP地址经常变化的DNSlogging。 Nginxcaching了过时的IP地址,导致对错误的IP地址的请求。 如何阻止nginxcaching的IP地址,当它是过时的?

不断必须重新加载PHP-FPM

我们有一个运行nginx和PHP-FPM的负载很重的服务器。 我们在这个服务器上有6个网站,运行PHP-FPM和nginx。 软件全是vBulletin 3.8和WordPress。 数据库位于单独的服务器上。 现在,由于这些网站是非常受欢迎的网站,我们通常同时在线访问7-8,000个访问者,每个页面大部分都在数据库中。 我相信这是我们问题的原因。 因为我们在MySQL服务器上有这么多的大型数据库,而且由于这些查询在软件上可能会更好,所以我认为MySQL会偶尔无法及时地向PHP返回结果,从而产生一个级联效应,最终导致一切都停止,直到我们重新加载PHP-FPM。 我们这样做之后,事情又开始好了。 我在解决问题时遇到问题的原因是因为我无法真正辨别日志中的任何内容。 在MySQL慢速查询日志中,当停机发生时,我没有什么兴趣。 在nginx日志中,我看到成千上万的条目说读取请求超时或连接超时(到PHP-FPM)。 而在PHP-FPM日志中,我看到很多行表示“执行超时(31秒),终止 所以在这一点上,我完全不知道在哪里寻找问题。 显然,无论发生什么事情都是因为这些脚本有时执行得不够快(通常它们在一秒钟之内加载,但是会导致加载时间急剧增加)。 这种情况一天发生好几次,对我们来说已经成了一个问题。 现在我只需要一个crontab来为php5-fpm每10分钟刷新一次,这样就可以解决崩溃的问题。 当然,当PHP重新加载时,nginx会抛出一个502网关错误,所以这不是一个很好的解决scheme。 如果有问题,PHP正在运行APCcaching。 我已经在几个地方看到,在某些情况下,APC会导致挂起。 任何指针都会有帮助。 我真的很想不必担心这台机器。 当然可以提供更多信息。 只要让我知道你需要什么。 更新:我刚刚通过apc.php复制到一个web根目录并访问它来查看我们的统计信息。 事情看起来不错。 然后我点击链接去用户统计和BOOM服务器立即挂起。 我重新加载了php-fpm,然后重新加载用户统计页面,并通过罚款。 等了一会儿,再次重新加载,服务器再次挂起。 所以这绝对是APC相关的。 问题是 – 我们如何解决? APCconfiguration: [apc] apc.enabled="1" apc.stat = "1" apc.max_file_size = "2M" apc.localcache = "1" apc.localcache.size = "256" apc.shm_segments = "1" apc.ttl = "3600" apc.user_ttl […]

神秘错误的中国stream量:如何找出HTTP请求使用的DNS服务器?

在过去的一周里,我从各种各样的中国IP地址获得了大量的stream量。 这个stream量似乎来自正常的人,他们的HTTP请求表明他们认为我是: Facebook的 海盗湾 各种BitTorrent跟踪器, 色情网站 所有这些听起来像人们使用VPN的东西。 或者会让中国长城生气的事情。 用户代理包括网页浏览器,Android,iOS,FBiOSSDK,Bittorrent。 IP地址是正常的商业中文提供商。 我有Nginx返回444如果主机是不正确的或用户代理显然是错误的: ## Deny illegal Host headers if ($host !~* ^({{ www_domain }})$ ) { return 444; } ## block bad agents if ($http_user_agent ~* FBiOSSDK|ExchangeWebServices|Bittorrent) { return 444; } 我现在可以处理负载,但是有一些高达2k /分钟的爆发。 我想知道他们为什么要来找我并阻止它。 我们也有合法的CN交通,所以禁止1/6的地球是不行的。 它可能是恶意的,甚至是个人的,但它可能只是一个configuration错误的DNS。 我的理论是,它是一个错误configuration的DNS服务器,或者可能是一些人们用来绕开Great Fire Wall的VPN服务。 给定一个客户端IP地址: 183.36.131.137 – – [05/Jan/2015:04:44:12 -0500] "GET /announce?info_hash=%3E%F3%0B%907%7F%9D%E1%C1%CB%BAiF%D8C%DE%27vG%A9&peer_id=%2DSD0100%2D%96%8B%C0%3B%86n%8El%C5L%11%13&ip=183.36.131.137&port=11794&uploaded=4689970239&downloaded=4689970239&left=0&numwant=200&key=9085&compact=1 […]

configuration了http2的Nginx不会传递HTTP / 2

我的Nginxconfiguration有问题。 我升级到nginx 1.9.6testinghttp / 2,但它不能在我的服务器上工作。 我用ubuntu 14.04.2 LTS 这是nginx -V输出: nginx version: nginx/1.9.6 built with OpenSSL 1.0.2d 9 Jul 2015 TLS SNI support enabled configure arguments: –prefix=/etc/nginx –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-client-body-temp-path=/var/lib/nginx/body –http-fastcgi-temp-path=/var/lib/nginx/fastcgi –http-log-path=/var/log/nginx/access.log –http-proxy-temp-path=/var/lib/nginx/proxy –http-scgi-temp-path=/var/lib/nginx/scgi –http-uwsgi-temp-path=/var/lib/nginx/uwsgi –lock-path=/var/lock/nginx.lock –pid-path=/var/run/nginx.pid –with-pcre-jit –with-debug –with-http_addition_module –with-http_auth_request_module –with-http_dav_module –with-http_geoip_module –with-http_gzip_static_module –with-http_image_filter_module –with-http_realip_module –with-http_stub_status_module –with-http_ssl_module –with-http_sub_module –with-http_xslt_module –with-http_v2_module –with-stream –with-ipv6 –with-mail –with-mail_ssl_module […]

nginx url重写:break和last的区别

我不明白中断和最后(重写标志)之间的区别。 文档相当深奥。 我试图在我的一些configuration之间切换两个,但我不能发现任何行为上的差异。 有人可以更详细地解释这些标志吗? 优选地,在将一个标志翻转到另一个时示出不同的行为的示例。

让我们用nginx反向代理encryption

介绍 我有一个开发服务器(目前运行Ubuntu 14.04 LTS),我已经使用了一段时间来在不同的端口上托pipe各种开发工具。 因为这些端口很难记住,所以我决定使用端口80作为我的所有服务,并在内部根据主机名进行端口转发。 而不是写入domain.com:5432,只需访问它通过sub.domain.com 例如,使用端口7547并在sub.domain.com上运行的应用程序X具有以下nginxconfiguration: upstream sub { server 127.0.0.1:7547; } server { listen 80; server_name sub.domain.com www.sub.domain.com; access_log /var/log/nginx/sub.log combined; location / { 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_pass http://127.0.0.1:7547; proxy_set_header Authorization ""; } } 问题 考虑到我select的当前configuration结构,是否可以使用letsencrypt并在https下运行不同的服务?

如何限制nginx的速度,但包括/不包括某些IP地址?

我能够使用limit_req来限制所有请求到我的服务器。 但是,我想删除某些IP地址(即白名单)的速率限制,并对某些IP地址使用不同的速率限制(即某些IP,我想低至1r / s)。 我尝试使用条件(例如, if ( $remote_addr = "1.2.3.4" ) {} ),但似乎只适用于重写规则,而不是速率限制规则。

现代文件系统中数百万文件的性能影响是什么?

假设我们使用ext4(启用了dir_index)来托pipe3M文件(平均大小为750KB),我们需要决定我们要使用的文件夹scheme。 在第一种解决scheme中 ,我们将散列函数应用于文件,并使用两个级别文件夹(第一级为1个字符,第二级为2个字符):因此,作为filex.for散列等于abcde1234 ,我们将其存储on / path / a / bc /abcde1234-filex.for。 在第二种解决scheme中 ,我们将散列函数应用于文件,并使用两个级别文件夹(第一级为2个字符,第二级为2个字符):因此,作为filex.for散列等于abcde1234 ,我们将其存储on / path / ab / de /abcde1234-filex.for。 对于第一个解决scheme,我们将有以下scheme/path/[16 folders]/[256 folders] , 每个文件夹 (文件所在的最后一个文件夹) 平均为732个文件 。 在第二种解决scheme中,我们将拥有/path/[256 folders]/[256 folders] , 每个文件夹的平均文件数为45个 。 考虑到我们要从这个scheme中写很多(基本上是nginxcaching系统)的文件( 但大多是读取 ),从性能的angular度来看,如果我们select了一个或其他的解决scheme呢? 另外,我们可以使用什么工具来检查/testing这个设置?

nginx:logging所有头文件的完整请求/响应?

我们有一个有时会挂起的应用程序服务器。 我们怀疑这是由于客户的要求不好。 nginx可以将完整的请求/响应(如fiddler捕获)logging到文件中,所以我们可以看到挂起之前发送的请求? (我们可能需要避免pcap和这种方法,并在nginx中完成) 如果nginx不是正确的工具,除了networking分析器以外,可能是什么?