Articles of nginx

10/20 / 40Gbps nginx大文件cachingwebserver

我想在这个问题上find最好的configuration/硬件来从一台服务器提供40Gbps。 情况 我们有一个video共享代理服务器,可以从后面的慢速存储服务器上卸载峰值。 所有的stream量只是HTTP。 服务器充当反向代理(不在服务器上caching的文件)和Web服务器(存储在本地驱动器上的文件)。 目前有100TB的文件,并在后端存储服务器上增长。 caching机制是独立实现的,这个问题不是caching本身,因为它工作得很好 – 目前提供14Gbps,传递到后端服务器只有2Gbps。 所以caching使用情况良好。 目标 从一台机器实现40Gbps甚至更高的吞吐量。 硬件1 硬件:Supermicro SC825,X11SSL-F,Xeon E3-1230v5(4C/[email protected]),16GB DDR4内存,2x Supermicro 10G STGN-i1S(LACP L3 + 4) SSD:1x 512GB三星,2x500GB三星,2x480GB Intel 535,1x 240GB Intel S3500 系统: irqbalancer停止 每个接口的set_irq_affinity(通过ixgbe驱动程序tarball中的脚本) 的ixgbe-4.3.15 I / O调度程序截止date iptables空(卸载模块) 文件系统:XFS Nginx的: sendfileclosures aio线程 指导1M tcp_nopush上 tcp_nodelay上 如图所示,我们能够推动12.5Gbps。 不幸的是,服务器没有响应。 有两件事引起了我的注意。 第一个是大量的IRQ。 在这种情况下,我不幸的是有/ proc / interrupts的图表。 第二件事是高系统负载,我认为这是由于kswapd0只能与16G的RAM工作有关。 硬件2 […]

Nginx + Php5-fpm不能渲染php文件

我花了好几个小时来弄清楚如何安装Nginx + Ruby Enterprise Edition + PHP5-fpm和MYSQL,最后它已经全部安装好了,而且似乎都已经开始正常运行了。 但由于某些原因,PHP文件没有被处理。 .html文件工作正常,但是当我尝试查看一个.php文件时,就好像它不存在一样,尽pipe它确实存在。 有趣的是,当我尝试查看一个不存在的.html文件时,我得到一个很好的Nginx 404消息,但是当我查看一个.php文件时,它甚至不能提供给我。 所以对于我的新手理解,看起来好像configuration有问题,或者Nginx和PHP-fpm不能互相交stream。 我一直在看nginxconfiguration文件的许多其他例子,我敢肯定,事情的一面是好的。 那么…这里是conf文件的相关位: 位置〜\ .php $ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME / var / www / eman / $ fastcgi_script_name; 包括fastcgi_params; } 和 fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; 任何帮助是极大的赞赏。 编辑 […]

反向SSH隧道

我试图转发从远程服务器的networkingstream量到我的本地机器,以testing一些API集成(tropo,贝宝等)。 基本上,我试图设置类似tunnlr.com提供的东西。 我用命令启动了ssh隧道 $ssh –nNT –R :7777:localhost:5000 user@server 然后我可以看到服务器正在使用端口7777进行监听 user@server:$netstat -ant | grep 7777 tcp 0 0 127.0.0.1:7777 0.0.0.0:* LISTEN tcp6 0 0 ::1:7777 :::* LISTEN $user@server:curl localhost:7777 Hello from local machine 所以这工作正常。 curl请求实际上是从本地机器提供的。 现在,我如何启用server.com:8888通过该隧道路由? 我试过像这样使用nginx: upstream tunnel { server 0.0.0.0:7777; } server { listen 8888; server_name server.com; location / { access_log /var/log/nginx/tunnel-access.log; error_log /var/log/nginx/tunnel-error.log; […]

Nginx的访问日志:GET zc.qq.com?

我在access.log中find了以下条目 115.231.222.40 – – [02/Oct/2015:07:57:11] "GET http://zc.qq.com/cgi-bin/common/attr?id=260714&r=0.8936631410048374 HTTP/1.1" 302 160 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; 360SE)" 这是什么意思? 我必须担心吗?

在nginx反向代理和后端web服务器之间使用HTTP / 2.0

我使用nginx作为后端web服务器前面的反向ssl代理,它能够执行HTTP / 2.0。 我注意到nginx通过HTTP / 1.1而不是HTTP / 2.0代理请求到后端服务器。 是否有可能告诉nginx使用未encryption的HTTP / 2.0连接? 这会提高性能吗?

对于使用PHP7的fastcgi_pass,权限被拒绝

我使用PHP7.0运行LEMP。 我已经在我的服务器块 fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 但是,当我打开该网站时,它会返回502错误的网关。 以下是错误日志。 *1 connect() to unix:/var/run/php/php7.0-fpm.sock failed (13: Permission denied) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: example.com, request: "GET / HTTP1.1", upstream: "fsatcgi://unix:/var/run/php/php7.0-fpm.sock:", host: "example.com" 它说权限被拒绝 。 这里有什么问题? 我已经检查,但我似乎无法find什么需要给予什么样的权限。 谢谢。

用于提供静态内容的最快Web服务器

我正在优化我们的系统以获得更快速的静态内容传输,并且想知道是否有人为了这样的目的而使用最快速的Web服务器有适当的经验。 从我考虑的三位主要候选人中,Nginx,Cherokee和Lighttpd,似乎都有自己的问题 – 但是我在网上阅读的报告有点偏向于倾向于用户目前使用的服务器。 任何想法在哪里看到一个适当的基准为这个特定的目的,或者至less是一个没有偏见的优点和缺点列表? 任何个人经验和陷阱我应该有所不同? 谢谢 编辑:Serverfault.com作为nginx的答案。 我仍然希望从宇宙的这一端听到一些开发人员的想法。

nginx:重写除一个位置以外的所有内容

现在我的nginx正在将几个域重写为我们正在使用的一个主域。 这是我的configuration中的一个规则: server { listen XXXX:80; server_name .exampleblog.org; rewrite ^(.*) http://blog.example.org$1 permanent; } 每个对** exampleblog.org *的请求都被redirect到blog.example.org 现在我想让www.exampleblog.org/+和exampleblog.org/+将用户redirect到Google Plus页面。 它尝试了不同的版本: server { listen XXXX:80; server_name .exampleblog.org; location /+ { rewrite ^ https://plus.google.com/12345678901234567890/ permanent; } rewrite ^(.*) http://blog.example.org$1 permanent; } 以上和其他版本只是redirect到blog.example.org/+ – 我做错了什么?

nginx作为上游SSL的反向代理

我正在构build一个内部API的代理,以允许客户端进行连接,而无需安装自签名证书。 客户端(仅在内部构build,拥有和使用)将通过SSL连接到nginx框,我使用XSendfile在应用程序级别validation凭据(一个Rails应用程序)。 如果凭证是有效的,则连接被传回到nginx,在那里它使用proxy_pass将连接发送到上游服务器。 现在,这对于标准的http连接非常有用,但是我正试图弄清楚如何将我们的证书添加到组合中。 这个问题与这个问题几乎相同,但是证书要求很尴尬。 这甚至可以用nginx吗? 有更好的解决scheme吗? 我也解决了客户端的HTTP – > nginx,以及从nginx到API的自签名证书。

为什么使用Varnishcaching静态文件,为什么不通过

我有一个系统运行nginx / php-fpm / varnish / wordpress和amazon s3。 现在我已经在设置系统时查看了很多configuration文件,并且在所有这些文件中find了类似这样的内容: /* If the request is for pictures, javascript, css, etc */ if (req.url ~ "\.(jpg|jpeg|png|gif|css|js)$") { /* Remove the cookie and make the request static */ unset req.http.cookie; return (lookup); } 我不明白为什么这样做。 大多数的例子也运行NginX作为一个networking服务器。 现在的问题是,为什么要使用清漆caching来caching这些静态文件。 对我来说,只cachingdynamic文件让php-fpm / mysql不会受到太大的冲击。 我是对的还是我在这里错过了什么? UPDATE 我想根据给出的答案给问题添加一些信息。 如果你有一个dynamic的网站,内容实际上发生了很大的变化,那么查抄就没有意义了。 但是,如果您将WordPress用于静态网站,则可以长时间进行caching。 这就是说,对我来说更重要的是静态的 。 我在不同的caching应用程序和networking服务器应用程序中find了一些testing和基准testing的链接。 Serving […]