问题 从Nginx的memcached后端定期超时(请参阅下面的示例错误) 事情已经testing: 它在本地和远程memcached服务器上都会出现,所以networking不会成为问题 它同时发生在memc和memcached后端 无论是否有上行Keepalive模块,都会发生 它发生在nginx 0.8,1.0.x和1.1.x 缓冲日志似乎稍微减less了错误的数量,但它们仍然存在,这可能只是巧合 通过udp(即非阻塞)login到另一个没有任何区别 其他信息: memcached服务器每秒从这个和其他(远程)客户端处理约500个请求 memcached日志中没有错误/报告 使用以下设置启动memcached: tcp和udp都启用(目前只使用tcp) 16GB的内存 16个线程(在32核心机器上) 限于8192个连接 通过supervisord以non-daemonic模式启动 服务器运行FreeBSD 8.2 超时发生在低负载和高负载(现在每秒只有大约50个请求) 这个问题 所以我的问题是…我怎么能debugging这些问题? 任何人都有一个想法的根本原因可能是什么? 错误不会持续发生,但会频繁出现在每隔几分钟的日志中。 来自日志的示例错误: 2011/08/30 17:23:34 [error] 13921#0: *38602 upstream timed out (60: Operation timed out) while reading response header from upstream, client: xxxx, server: some.host.com, request: "GET /some_random_file HTTP/1.1", subrequest: "/memc_get", […]
我只是设置uWSGI和nginx(与uWSGI模块),并希望得到MoinMoin设置。 我使用下面的命令与MoinMoin一起运行uWSGI: /usr/bin/uwsgi -s moin.sock –wsgi-file wiki/server/moin.wsgi -M -p 4 在nginx中,我把它设置成这样: location / { uwsgi_pass unix:///mnt/moin/moin.sock; include uwsgi_params; } 如果我想让MoinMoin在我的服务器的根目录下运行,这可以正常工作,但是我希望我的MoinMoin在/ wiki上运行而不是/ 。 我改变了我的nginxconfiguration来反映这一点: location /wiki { uwsgi_pass unix:///mnt/moin/moin.sock; include uwsgi_params; } 重新启动这两个服务器后,MoinMoin中的链接仍然希望转到/ PageName而不是/ wiki / PageName 。 我想我将不得不在MoinMoin中指定一个设置。 我看到wikiconfig.py有一个url_prefix_static选项,但是我不确定这是否被弃用,或者是否有更好的方法。
我有三个Web服务器使用nginx作为前端和php-cgi作为后端。 我们使用DNS循环来分配负载。 在这个服务器上我们有几个PHP应用程序,每个应用程序都存储在它自己的文件夹中 我们有大量的潜在用户(员工人数约20000人)。 每个应用程序由不同的团队维护,因此可能会使用不同的PHP框架。 当一个应用程序有一个写得不好的页面时,php-cgi实例可能会被卡住。 当有足够的人访问“坏”页面时,整个三台服务器可能会卡住。 有没有一种机制来确定哪个PHP应用程序有不好的页面问题? 如果我可以确定php-cgi进程正在运行哪个php页面,则可以确定该页面属于哪个应用程序,并且可以停用有问题的应用程序,而不是观察整个系统停机。 问题是我没有find如何监视哪个页面正在运行(仍然卡住)。 如果只有一个应用程序,我可以改变它,我会在前端控制器的开始和结束处插入日志语句。 有超过6个应用程序使这种方法不再实际。
我们有Web服务器设置如下 Loadbalancer(HAPROXY)<—> Nginx <—> App服务器 为了让Nginx知道正在build立连接的实际客户端,我使用HttpRealIpModule编译了Nginx,并进行了configuration更改。 HAPROXY也被configuration为转发XFF头。 如果客户端正在使用公共IP地址浏览,Nginx至less有一部分是正确的(我的观察)。 如果客户端拥有私有IP,并且位于另一个客户端代理(如SQUID)的后面,则获取客户端的私有IP,而不是私有IP正在被NATTED的公共IP。 根据Nginx模块文档[ http://wiki.nginx.org/HttpRealIpModule],HttpRealIpModule应该在X-Forwarded-For头部中取得最后一个IP来replace。 这里是NGREP转储为一个客户与私有IP背后的鱿鱼代理 T 192.168.255.1:53777 -> 192.168.153.164:80 [AP] .1315664739.21; __utmb=82961925.3.10.1315664739; __utmc=82961925; __utmz=82961925.1315664739.21.21.utmcsr=domainname.com|utmccn= (referral)|utmcmd=referral|utmcct=/users/sign_in; SnapABugHistory=206 #..If-None-Match: "cc1ff315751caad21aea3dfd5392a56a"..Via: 1.1 atmosphere.sprout.lan:3128 (squid/2.7.STABLE9)..X-Forwarded-For: 192.168.3.111..Cache-Control: max-age=259200..X-Forwarded-For: 116.90.235.11…. 这里的XFF头是atmosphere.sprout.lan:3128(squid / 2.7.STABLE9).. X-Forwarded-For:192.168.3.111..Cache-Control:max-age = 259200..X-Forwarded-For:116.90。 235.11。 在头部看到的最后一个IP是116.90.235.11,但是nginx的日志文件显示了客户端的私有IP 192.168.2.111 这是正常的?
我目前有一个应用程序,我想让每个人都来自两个特定的IP地址,并通过来自另一个IP的用户的同一个URL来保护同一个应用程序。 例如,我允许用户有190.190.190.110和190.190.190.112 。 而对于其他人,我希望Nginx引用一个htpassword文件。 有谁知道如何做到这一点? 编辑:快速
我刚刚用php5-fpm做了一个带有nginx的服务器的全新安装。 为什么如果你访问一个不存在的PHP页面,你会得到一个空白页面,而不是默认的“未find”页面的Nginx? 不应该像Nginx的Web服务器像非PHP文件处理? 组态 user www-data; worker_processes 1; pid /var/run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; […]
我们想迁移到nginx,并想要有和我们现在一样的行为: 我们使用下面的负载均衡设置:Apache mod_jk和AJP连接到JBoss 4.2.3 workers。 安装JKStatusManager以在线configuration工作人员设置。 工人们有粘性会议。 会话故障切换没有会话复制。 不幸的是,我们无法为会话故障转移启用会话复制,因为我们的会话状态太大(JSF)。 我们不能移动到客户端复制,因为会话状态太大。 当我们需要更新工人时,我们执行以下操作: 禁用50%的工人 等待大约60分钟,直到这些工作者连接了0个客户端 更新这些工人 使这些工人 对另外50%做同样的事情 这不是最佳的,但它工作得很好。 问题:是否可以用nginx实现相同的行为? (除了AJP连接,我们希望在后端使用HTTPS和nginx-module HttpProxyModule)
我试图重写下面的Nginx位置规则到一个位置块,但由于(。*)$它似乎是逃避我.. location ~ /admin { rewrite ^/admin(.*)$ /target.php last; } location ~ /index/ { rewrite ^/index/(.*)$ /target.php last; } location ~ /services/ { rewrite ^/services/(.*)$ /target.php last; } location ~ /test/ { rewrite ^/test/(.*)$ /target.php last; } 我以前能够使用正则expression式,但是无法得到符合上面的方法 location ~ /(someplace|other|another)
我有一个Nginx位置指令的问题。 我需要能够通过fastcgi发送任何URI,以便它最终在一个PHP框架。 但是我也想build立一个规则,任何以/用户开头的URI都被redirect(比方说http://www.google.com )。 所以我就是这样做的: location ~* ^/users*$ { rewrite ^ http://www.google.com? permanent; } location ~* \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_intercept_errors on; # to support 404s for PHP files not found fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 我可以去任何URL,它会通过我使用的PHP框架发送,所以部分工作。 但是,/用户*redirect不起作用。 如果我注释掉第二个位置方向(对于PHP文件),/ users *redirect工作,但实际上在将文件index.phpredirect到http://www.google.com之前将其作为文件下载。 我怎样才能达到这个目的?
我如何在nginx中执行以下操作? 我有一个在example.com/id/44上托pipe的网站,我希望将我的域名test.com链接到该url。 我也希望URL中的域名能够粘贴到test.com,而不是example.com的URL。 所以test.com – > example.com/id/44 我目前在nginx中有以下内容,但url不会粘在test.com上 server { server_name www.test.eu test.eu; access_log /srv/www/www.test.eu/logs/access.log; error_log /srv/www/www.test.eu/logs/error.log; root /srv/www/www.test.eu/public_html/src/public; location / { rewrite ^/ http://www.example.com/id/5 break; } } 这在nginx中可能吗?