我使用NGINX作为上游IISnetworking服务器的反向networking代理。 我正在对IIS服务器上的https绑定进行proxy_pass,所以我知道SSL正在被encryption/解密两次,但不应该像现在这样慢。 NGINX版本1.4.4 OpenSSL版本1.0.1f 我试过的东西: 调整SSL密码列表 重新编译NGINX,debugging和升级到最新的OpenSSL 检查访问/错误/debugging日志logging输出 玩W /各种NGINX指令 使用ApacheBench进行testing: 每秒请求数: HTTP(通过nginx)= 3312 RPS HTTPS(通过nginx)= 273 RPS < – ? HTTP(直接到后端)= 4237 RPS HTTPS(直接到后端)= 1349 RPS 示例ApacheBench输出: abs -c 100 -n 1000 h ttps://nginxtest1.mydomain.com/ Benchmarking nginxtest1.mydomain.com (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed […]
我的nginx服务器充当另一台服务器的代理,有时返回404s。 我希望404响应可以被caching,就像200响应一样。 但是,我不能使用expires ,因为文档指出: expires仅适用于200,204,301,302和304响应。 请注意,根据HTTP规范,非200响应的caching是完全可能的 。 那么我怎样才能在404响应中设置到期date呢?
我使用Nginx的HttpUwsgiModule,我想执行caching。 我知道有一个uwsgi_cache可以用来caching本地文件系统上的页面。 但是我想用Redis来caching内存中的页面。 我看了一下HttpRedis和HttpSRCacheModule,但我无法弄清楚如何完全使用它们。 也许这只是因为我是Nginx的新手。 如果有人能给出一个详细的configuration示例,我将不胜感激。
我有FreeBSD服务器(HT,SSD,32Gb RAM的16核心),每天约有40M的HTTP请求。 所有请求都由nginx + php-fpm 。 在这些图表中,您可以看到在交通高峰期我们遇到了问题。 我不是系统pipe理员,请解释什么是“活动连接”,“写入”,“等待”,“正在读取”以及当服务器无法快速处理请求时为什么“写入”增加? 这里有一些更多的CPU,内存和负载平均图。 正如你所看到的,CPU和内存没有什么奇怪的事情发生,但Load Average也有一个高峰。 在这个Load Average高峰期间,我注意到在php-fpm.sock上有一个不存在的队列 netstat -Lan | grep php-fpm unix 2525/0/32246 /tmp/php-fpm.sock 队列中的成员数从0到12000不等。当值为0时 – 一切正常,我在60-100毫秒内得到http响应。 当值为5000-12000时可能需要3-10秒。 我也检查了是否有任何不寻常的进程,但无法find任何东西。 以下是几分钟前截图(现在一切正常,没有stream量高峰): 我的结论是:根据CPU和内存图,我可以说这个服务器可以提供越来越多的请求,但是由于php-fpm的非最优化工作,在交通高峰期是不可能的。 有关如何解决这个问题的任何build议?
我在Ubuntu Server 12.04上使用goaccess来查看我的Web服务器上的分析。 我只是运行下面的工具: goaccess -f /var/log/nginx/access.log 不过,我只看到一天的数据。 我想知道在nginx中是否有一些默认设置来pipe理这个? 我已经读了一些关于日志文件的旋转,但目前对我来说真的不是问题。 看来有一些东西让access.log不止一天显示。 在nginx文档中找不到任何东西来玩一些设置。
出于某种原因,每当我在服务器上运行查询时,我都会收到此错误。 在我的本地设置,这个查询需要大约7-8秒才能返回,但它保持超时在我的实际服务器上。 错误: 2014/03/26 13:40:13 [error] 11084#0: *22 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xxxxx, server: xxxx request: "GET /xxxxx/ HTTP/1.1", upstream: "uwsgi://unix:///srv/www/poka/app/poka/nginx/poka.sock", host: "xxxx" 2014/03/26 13:41:26 [error] 11084#0: *80 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xxxxx, server: xxx, […]
我使用Nginx创build了一个VPS,并试图显示php信息: <?php phpinfo(); ?> <?php phpinfo(); ?> 。 相反,浏览器要求我下载php文件,而且它也没有被parsing。 这只发生在位于/var/www/我的VPS网站上。 位于默认/usr/share/nginx/html (由浏览器通过ip访问)中的相同的php文件显示OK(并且显示在浏览器中,而不是要求下载)。 这是我的configuration文件: virtual.conf # # A virtual host using mix of IP-, name-, and port-based configuration # server { listen 80; # listen *:80; server_name website.com www.website.com; location / { root /var/www/website.com/public_html/; index index.php index.html index.htm; } # pass the PHP scripts to FastCGI […]
之前 直到最近,我用nginx 1.4.x与zebrafishlabs / nginx-statsd作为openresty的反向代理(是的,我知道,nginx后面的nginx是愚蠢的 – 请继续阅读)与以下位置nginxconfiguration: location /track { statsd_count "tracker.track_$scheme" 1; proxy_pass http://localhost:10081/track; proxy_set_header Host $host; } ..和以下位置openresty(当然听port 10081 TCP)configuration: location /track { content_by_lua_file 'conf/track.lua'; } 它工作。 请注意,我有几个这样的位置 – 这很重要,你会在稍后看到。 统计信息被推送到statsd并执行脚本。 现在 最近我决定删除前端nginx,并单独使用openresty。 现在我正在使用openresty 1.5.12.1和zebrafishlabs / nginx-statsd编译成以下(明显的)configuration: location /track { statsd_count "tracker.track_$scheme" 1; content_by_lua_file 'conf/track.lua'; } 但是在这个变化之后有时我的统计数据不会被推送到statsd 。 显然,如果我的lua脚本使用ngx.redirect lua命令结束执行,就会发生这种情况。 。 我尝试使用此configuration作为解决方法: location […]
我正在使用美洲狮和nxinx,并据我所知,它只是使用一个单一的线程,即使我用16个或更多的默认线程启动它。 我已经build立了一个新的rails应用程序,然后通过这里描述的设置: http://blog.wiemann.name/rails-server 这给了这个例子nginxconfiguration: upstream benchmarkapp.com {server unix:/tmp/benchmark_app.sock fail_timeout=0;} server { server_name benchmarkapp.com; root /home/tristan/benchmark_app/public; try_files $uri/index.html $uri @benchmarkapp.com; location @benchmarkapp.com { proxy_redirect off; proxy_pass http://benchmarkapp.com; } } 然后创build一个简单的控制器动作,只是睡3秒,然后呈现“你好”: class WelcomeController < ApplicationController def index sleep(2) render :text => "hello" end end 然后我开始使用puma: puma -t 16 -b unix:///tmp/benchmark_app.sock -S /tmp/benchmark_app.state 一旦运行,我用10个并发用户使用围攻打了它,结果如下 % siege -c 10 […]
我在代理后面运行Nginx。 我通过X-Forwarded-For HTTP请求头获取访问者的真实IP地址。 我想根据dynamic阻止列表阻止个别IP地址,最多可达10000多个IP。 我正在研究ModSecurity来做到这一点,但它看起来太复杂了,只是为了阻止IP阻塞而使用非常神秘而脆弱的configuration语言。 还有什么其他的select? 另外,生成包含在主要Nginxconfiguration中的Nginx规则configuration( ip-blocklist.conf )是可行的,例如每5分钟一次,然后正常地重新启动Nginx? Nginx的规则如何可伸缩,例如高达10K条目?