我的一台服务器(Ubuntu 12.04,16CPU,32GB RAM)运行我的网站(Nginx 1.1.19,PHP5-FPM,Php 5.3.10,Symfony2 Web Framework) 突然,用户开始得到HTTP 5 **错误。 当我在服务器上,有大量的磁盘IO,罪魁祸首是[flush] 。 当我使用dmesg浏览内核日志时,发现[flush]是nginx进程需要花费太多时间来刷新的原因。 (我认为) 事件发生时的内核日志条目: Jan 31 22:51:25 ip-10-0-0-160 kernel: [115562.048088] INFO: task nginx:17876 blocked for more than 120 seconds. Jan 31 22:51:25 ip-10-0-0-160 kernel: [115562.050180] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. Jan 31 22:51:25 ip-10-0-0-160 kernel: [115562.057484] nginx D ffffffff81806240 0 17876 17875 […]
我们遇到了一个非常严重的问题,在看似随机的时候,我们得到了一个由我们的应用程序处理的重复请求。 通常情况下,用户提交表单,偶尔会将其内容保存两次。 我们已经消除了这个问题被JS驱动的双重提交的可能性。 我们有一台networking分析仪,certificate只有一个请求正在进行。 但是,我们也已经certificate,PHP应用程序当然是在整个执行两次。 彻底调查后,应用程序中没有任何逻辑问题会导致这种双重保存行为。 编辑:我们删除了“Keepalive 8” 来自NGINX conf,我们不再得到双重意见。 相反,在有问题的请求中我们得到了一个504 我将不胜感激任何人谁可以看看下面,让我知道,如果有什么突出的 – 谢谢! 我们的NGINX和PHP-FPMconfiguration如下: /etc/nginx/nginx.conf user nginx; worker_processes 1; worker_rlimit_nofile 10240; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; multi_accept on; use epoll; } http { server_tokens off; add_header 'Access-Control-Allow-Origin' http://$host; add_header 'Access-Control-Allow-Methods' 'GET, POST'; add_header 'X-Powered-By' 'smartCMS'; upstream php_fpm { least_conn; server 127.0.0.1:9000 […]
我在我主持的wordpress网站上发生DoS攻击。 173.192.109.118 – – [30/Sep/2015:22:31:36 +0000] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)" 我在我的nginx访问日志中获得了大约140个这样的日志(大概需要10秒,所以〜14次/秒),然后他们切换到502: 173.192.109.118 – – [30/Sep/2015:22:31:46 +0000] "POST /xmlrpc.php HTTP/1.0" 502 537 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)" 此时,必须重新启动PHP-FPM才能恢复站点。 所以,我的问题是: 有什么我可以做的,以防止一个单一的攻击者崩溃PHP-FPM ? 我的(有限的)经验大部分是与Apache,所以任何意见将不胜感激。 我试图设定一切合理的限制。 服务器有足够的内存负载,所以这似乎不是问题。 我刚刚添加了一个速率限制器,从以下教程: https : //www.howtoforge.com/rate-limiting-with-nginx ,虽然这似乎延迟的痛苦,它仍然最终崩溃PHP-FPM 。 /var/log/php5-fpm.log似乎没有显示任何有趣或有用的东西,除了我忘记在configuration文件中添加前导/后引入的几个错误,以及一些成功行重新启动: [30-Sep-2015 23:03:51] ERROR: […]
我开始使用PHP 5.6的内置PHP OPcache,现在面临一个问题。 我将其设置为使用高达1 GB的RAM,这对于我的网站来说已经足够了,但是它永远无法使用全部1 GB的RAM。 caching被清除了很多次,然后才能分配这个限制,就像你在这张munin图中看到的那样: 所以每隔几天它就从caching中删除所有文件,并重新开始caching它们。 首先,我认为问题是variablesopcache.max_wasted_percentage但它不关心我设置它的值。 我的configuration如下: ; configuration for php ZendOpcache module ; priority=05 zend_extension=opcache.so opcache.enable = 1 opcache.enable_cli = 1 opcache.memory_consumption = 1024 opcache.interned_strings_buffer = 128 opcache.blacklist_filename = /etc/php5/opcache_blacklist.txt opcache.max_accelerated_files = 65407 opcache.revalidate_freq = 5 opcache.fast_shutdown = 1 opcache.max_wasted_percentage = 50 opcache.enable_file_override = 1 我正在使用nginx和FastCGI的Debian Jessie环境。 我想达到caching只有在内存消耗达到1 GB时才被清除。 我已经尝试了这样一个非常小的configuration: ; […]
我注意到我们的一台服务器在logrotate运行之后就开始返回错误,即在nginx错误日志中我可以看到: 当读取来自上游的响应标题时,客户端:xxx.yyy.zz.ww,服务器:www.test.com,请求:“GET”错误8501#0:* 118126869失败(104:连接复位) /index.php HTTP / 1.1“,上游:”fastcgi://127.0.0.1:9011“,主机:”www.test.com“ 我已经尝试添加postrotate行动,将使PHP重新装载优雅,但错误仍在发生,我们目前的logrotate如下: /var/log/php5-fpm.log { daily missingok rotate 52 compress delaycompress notifempty create 644 root root postrotate [ ! -f /var/run/php5-fpm.pid ] || kill -USR2 `cat /var/run/php5-fpm.pid` endscript } PHPconfiguration如下: [www-9011] user = www-data group = www-data listen = 127.0.0.1:9011 listen.backlog = 65535 pm = ondemand pm.max_children = 50 pm.process_idle_timeout […]
目前我提到,如果我访问我的apache2状态页面,很多连接都gracefully finishing 。 这是什么意思,为什么他们优雅地完成? 其中有些人处于这种状态5-10分钟。 服务器使用Apache 2.4与event-worker和PHP-FPM作为PHP处理程序。
我正在尝试使用dockerconfiguration一个php webapp。 这个想法是在一个独立的容器中使用php-fpm运行应用程序,并有另一个运行nginx的容器。 这个设置的想法是使用相同的nginx容器代理请求到已经在同一台机器上工作的其他webapps。 问题是我不能让nginx正确处理静态文件(js,css等),因为对那些请求保持去fpm 。 这就是文件系统的样子: / ├── Makefile ├── config │ └── webapp.config └── webapp └── web ├── index.php └── static.js 我使用一个看起来像这样的Makefile来运行整个事情(对docker-compose不感兴趣): PWD:=$(shell pwd) CONFIG:='/config' WEBAPP:='/webapp' run: | run-network run-webapp run-nginx run-network: docker network create internal-net run-webapp: docker run –rm \ –name=webapp \ –net=internal-net \ –volume=$(PWD)$(WEBAPP):/var/www/webapp:ro \ -p 9000:9000 \ php:5.6.22-fpm-alpine run-nginx: docker […]
概述: 我有十几个WP安装在Ubuntu 14.04 LTS,w / PHP 5.5.9和Nginx 1.4.6上。 MySQL在备用节点上运行,而不是在公共networking上运行。 目标: 要让每个WP安装的目录和文件不是世界可读的。 如果恶意用户访问特定的WP安装,我不能让他们能够导航到备用WP安装并读取DB凭据。 细节: Nginx作为www数据运行。 为每个虚拟主机创build一个没有shell的用户。 每个虚拟主机都支持一个WP安装。 PHP-FPM池特定于每个用户/虚拟主机运行。 PHP-FPM池通过socks连接w / Nginx,而不是回环IP。 阅读下面的Wordfence文章,我试图设置文件权限,如下所示: 文件 – 640 目录 – 750 当我像这样configuration权限时,作为www-data运行的Nginx不能再正确访问WP文件。 如果我将权限设置回644 & 755 ,一切都按预期工作。 网站安装在以下结构中: /var/www/site1.com/public /var/www/site2.com/public /var/www/site3.com/public 等等。 每个目录由相应的用户和用户组拥有。 即: site1-com:site1-com /var/www/site1.com 我们有一个WP网站被黑客攻击,他们能够得到一个PHP文件pipe理器脚本到服务器上。 我的理解是这个脚本是由用户www-data运行的。 (检查w / ps aux )如果这是真的,我怀疑恶意用户可以访问所有其他WP安装通过他们的PHP文件pipe理器脚本。 如何改善我的权限设置以加强安全性? 我愿意接受所有build议,即使这意味着重新configuration整个堆栈安装。 提前致谢。
我对nginx和php7.0-fpm有点问题。 我每秒的请求比apache + mod_phpless得多。 例如(同一台服务器) 请求的脚本在testing中是简单的回声。 //编辑: nginx conf&www.conf&php.ini http://pastebin.com/9m6yx8h4 // EDIT2: 如果是使用快速= CGI模块,而不是mod_php模块的Apache我会得到相同的结果比Nginx的+快速CGI(30r./s)。 在php-fpm中有问题吗? 问题在哪里?
我已经将Source X和PHP 5.3.3从源代码安装到CentOS 5.5服务器上。 我认为从安装一切进展顺利,引擎X确实提供静态文件。 当试图访问一个基本的PHP文件,但它作为纯文本服务的PHP代码。 引擎X错误日志显示: 2010/09/23 20:49:35 [error] 3331#0:* 6 connect()失败(111:Connection refused)while 连接到上游,客户端:my.local.ip,服务器:the_server, 请求:“GET / HTTP / 1.1”,上行:“fastcgi://127.0.0.1:9000”, 主持人:“the.servers.ip” 我的configuration文件如下: 服务器{ 听*:80; 位置〜\ .php $ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME / var / www / default $ fastcgi_script_name; fastcgi_param PATH_INFO $ fastcgi_script_name; include / usr / local / nginx / conf / fastcgi_params; […]