我在AWS有两台服务器。 一个是现场制作服务器(一个有数百个站点和大约5,000个用户的多站点WordPress安装),另一个是为testing服务器configuration的prod克隆。 活动的有四个arrays服务器,一个Elastic Load Balancer,连接到AWS中的一个大型RDS。 直到昨天,我天真地认为我们的caching正在通过APC和WordPress插件在这里和那里处理。 但不是。 结果发现有人在我们的服务器上添加了AWS的ElastiCache。 从本质上讲,ElastiCache是不在云中的那些memcache。 无论如何,我们前两天试图在我们的testing服务器上启用caching,并且引入了一个非常奇怪的错误(一个redirect神秘地出现在我们的活动网站的主要pipe理仪表板上,然后进入我们的testing服务器)。 所以一旦我们意识到这个bug最有可能与我们不知道的caching系统有关,我们就禁用了caching。 事实certificate,当我们在我们的testing服务器上启用caching时,它使用了我们在服务器上使用的同一个Elasticache服务器(因为testing是活的克隆)。 所以当我们删除/重命名object-cache.php文件时,我们禁用了它。 禁用它解决了我们的redirect问题,但是突然之间,我们的5,000个用户中有很多(不是全部)用户不能再login到他们各自的站点。 出于某种原因,我们的数据库中的值对于很大一部分用户来说不起作用,迫使他们不得不重置密码。 显然,这个数字是5000个用户的巨大数量。 因此,我们在实例上重新启用了caching,并决定修改我们的cachingredirect,而不是WPconfiguration更改(我们在configuration中添加了define('RELOCATE',true);强制redirect到我们的testing服务器被覆盖)。 我们在memcache中注意到的一件事情是,它不断更新我们的wp_options表,其中testing服务器的域代替了我们的活动域。 实际上,每当我运行查询来查找testing域的string并将其更新到活动域时,它仍然在执行此操作。 每隔几分钟,caching都会将其更改回来。 害怕。 但是现在看起来我们的configuration更改强制覆盖。 真正令人关注的是,看起来内存caching似乎是从自己的密钥中提取出来的:值为用户密码而不是直接从数据库中取值。 我的意思是启用caching,用户可以进入。没有它,许多用户被迫重置密码。 有没有人有任何想法,以便如何有效地了解在这种情况下与memcache发生了什么,以及如何解决这个问题,使数据库得到适当的写入,所以密码信息不只是在caching中举行? 我认为这是一个定时炸弹。 所有这一切都需要一个flush_all命令,让我的大部分用户的生活非常痛苦。 我们在NDS上使用RDS上的MySQL。 WordPress 3.4.2。
我有一个8个独立的Web服务器集群,每个都运行nginx。 他们都托pipe相同的网站,并与rsync同步。 另外,每台服务器都有8个不同的IP地址。 根据一些业务逻辑,我托pipe的网站正在被定向到不同的IP。 有什么办法可以在所有服务器之间同步configuration文件,但只更改每个IP上的configuration文件? 例如,在每个服务器上都有一个nginx.conf文件: @IP1 = '1.1.1.1'; @IP2 = '2.2.2.2'; include 'sites.conf'; 然后同步sites.conf并让它变成这样: server { listen @IP1:80; … //more configurations here } 有没有可能做这样的事情?
昨晚在午夜左右,我们的应用程序崩溃了,我试图确定为什么。 我们目前在EC2上有一个nginx前端服务器和2个独angular兽工作者(app)服务器。 我们麒麟的工作人员几乎不停地计时,因此被主人重新启动。 从我所看到的,我们现在没有crontabs或任何设置运行,所以我有点难住。 当我醒来(经过6个小时的宕机)之后,我杀死了独angular兽进程并重新执行了独angular兽二进制文件,于是我能够在今天早上得到这个应用程序。 (unicorn_rails -c unicorn.rb等) 任何想法在哪里看? 事实上,这两个应用程序服务器宕机让我觉得它可能是数据库(RDS)? 日志填满了以下(6小时..等); E, [2013-02-28T00:07:40.367981 #11097] ERROR — : worker=2 PID:26941 timeout (31s > 30s), killing E, [2013-02-28T00:07:40.468495 #11097] ERROR — : reaped #<Process::Status: pid 26941 SIGKILL (signal 9)> worker=2 I, [2013-02-28T00:07:40.756724 #28319] INFO — : worker=2 ready E, [2013-02-28T00:07:44.519818 #11097] ERROR — : worker=1 PID:11292 timeout […]
我有两个单独的Nginx机器。 该域使用循环法DNS,并且有两个Alogging,两个前端Nginx服务器各有一个logging。 两个Nginx服务器都使用ip_hash指令和代理请求到相同的后端服务器。 到第一个Nginx服务器的IP地址是否总会被路由到与其他Nginx服务器的IP地址相同的后端服务器? 这可能有帮助: nginx使用ip_hash粘性会话的IP是什么?
在我的Ubuntu 12.10服务器上,我升级了PHP到5.5。 在我的wordpress网站得到502错误之后,我做了一些Googlesearch,发现我需要改变我的nginxconfiguration,以匹配php脚本传递到php5-fpm.sock而不是端口9000.所以我改变了我的网站的configuration文件到下面: # Pass PHP scripts on to PHP-FPM location ~* \.php$ { try_files $uri /index.php; fastcgi_index index.php; fastcgi_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_buffer_size 16k; fastcgi_buffers 4 16k; } 然后我service nginx restart 。 但502错误仍然存在。 在检查错误日志时,我得到: 2014/03/30 14:16:37 [error] 1451#0: *21 connect() failed (111: Connection refused) while connecting to upstream, […]
我有一个域(example.com)和一个子域(sub.example.com)都托pipe在同一台服务器上。 我想代理一个请求,所以在http://sub.example.com/api/上请求的任何文件都会在http://example.com/api/ (和参数一起)上被请求。这里是我的nginx代码sub.example.com: location /api { rewrite /api/(.*) /api/$1 break; proxy_pass http://example.com/api; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_buffering off; } 这对我不起作用。 什么工作是: location ~* ^/api/(.*)$ { rewrite ^/api/(.*)$ http://example.com/api/$1 last; } 编辑:我忘了说,我的服务器定义包含一些关于Yii框架和parsing的PHP文件的规则。 这是完整的服务器声明: server { listen 80; server_name sub.example.com; access_log /var/log/nginx/sub.example.com.access_log main; error_log /var/log/nginx/sub.example.com.error_log info; root /var/www/localhost/htdocs/sub.example.com; index index.php […]
我在vmware-esxi虚拟化中使用了debian 7 x64。 每个客户端的最大下载量是1mb / s,nginx不能超过50mbps,我的问题是什么可能导致如此缓慢的传输? 服务器 **Settings for eth1: Supported ports: [ TP ] Supported link modes: 1000baseT/Full 10000baseT/Full** root@www:~# iostat Linux 3.2.0-4-amd64 (www) 09.02.2015 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 1,75 0,00 0,76 0,64 0,00 96,84 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 173,93 1736,11 219,06 354600 44744 root@www:~# […]
我试图通过将types { text/markdown md; } types { text/markdown md; }到server部分,但然后index.html停下来突然呈现。 只有在types覆盖了本节中所有的MIMEtypes时,我才能解释这一点。 那么,有没有一种方法可以为Markdown添加mimetypes而不触及其他任何东西?
我有一些PHP脚本,它返回内容types为“image / jpeg”的jpeg图像(1×1像素): // return image $image_name = 'img/pixel.jpg'; $image = fopen($image_name, 'rb'); header('Content-Length: ' . filesize($image_name)); header('Content-Type: image/jpeg'); fpassthru($image); 这个脚本在php5-fpm模块上运行在nginx / 1.2.1上。 问题是,匹配“ location〜\ .php $ ”请求的所有响应都有Content-Type头文件“ text / html; charset = UTF-8 ”,忽略我的php函数头('Content-Type:image / jpeg') 。 因此,我得到了与“文本/ HTML”内容types的JPEG图片。 以下是我的虚拟主机的简化configuration: server { listen 80; server_name localhost default_server; set $main_host "localhost"; root /var/www/$main_host/www; location / […]
我的团队在亚马逊AWS为客户build立了一个内联网门户,在这个门户上,我们使用了WebSockets来完成通知和其他小事情。 我们主要从服务器发送事件,但我们也使用它,所以客户端可以快速通知服务器的用户存在。 客户的要求之一是我们使用应用程序级别的防火墙来屏蔽恶意请求等等。 我们安装了Sophos UTM来处理这个问题。 对于HTTPstream量,这个效果很好。 但是,UTM不支持WebSocket,所以我们基本上必须将其configuration为只是盲目地代理请求。 由于我不完全理解的原因(即使经过几个小时的拆除),这是一个巨大的瓶颈,并且使得一切都变得缓慢(即使CPU和内存使用情况良好)。 然后,我们决定,如果UTM不是过滤stream量,那么让nginx来分割socketstream量,让UTM处理正常的stream量。 这个设置工作得很好,而且性能很棒。 但是,客户的安全人员担心WebSocketstream量没有被筛选。 因此,我有三个相关的问题: 这是一个问题吗? 如果不是的话,有什么我可以certificate的,比我能解释得更清楚些? 如果这是一个问题,有没有任何应用程序防火墙可以帮助我们? 我真的不知道我们会过滤什么,但希望这是防火墙的工作。 编辑:我是不正确的,我们实际上是在sockets上进行双向通信,虽然它仍然是相当微不足道的。 就是“用户在看这个标签”,“有用户确认通知”等等。