Articles of nginx

NGINX依赖性失败

当我尝试./configure nginx 1.4或1.5我得到下面。 checking for OS + Linux 2.6.18-274.18.1.el5 x86_64 checking for C compiler … not found ./configure: error: C compiler cc is not found 所以我尝试安装yum安装GCC并获取下面的内容。 glibc-headers-2.5-58.x86_64 from RHEL-5-64 has depsolving problems –> Missing Dependency: glibc = 2.5-58 is needed by package glibc-headers-2.5-58.x86_64 (RHEL-5-64) glibc-devel-2.5-58.x86_64 from RHEL-5-64 has depsolving problems –> Missing Dependency: glibc = […]

如何更改NGINX服务器名称

在Apache Web服务器中,我们可以使用mod_rewrite更改服务器签名(Apache名称)。 例如 – http://www.howtoforge.com/changing-apache-server-name-to-whatever-you-want-with-mod_security-on-debian-6 我怎样才能跟Nginx一样呢? 我是Nginx新手,想用我自己的签名来replaceNginx的名字。 我正在使用Ubuntu 12.04服务器版。

nginx重写修改参数

我正在尝试为外部API创buildJSON / JSONP代理。 这是我的configuration到目前为止: server { listen 80; server_name api.example.com; location /api/ { if ( $arg_callback ) { echo_before_body '$arg_callback('; echo_after_body ');'; } if ($args ~ (.*)callback=[^&]*(.*)) { set $args $1$2; } proxy_pass http://api.external.com; rewrite ^/api/(.*)$ /external/api/$1?api_key=MY_KEY$is_args$args break; } } 代理工作得很好,没有callback参数,返回有效的JSON。 但是,当我包含callback ,它仍然只返回JSON,而不包含callback。 在调用外部API之前,我必须去掉callback参数,因为如果请求包含无法识别的选项,它将返回一个错误。 在传递请求之前,如何将callback参数从请求中除去(如果存在),但是仍然使用它来创buildJSONP?

Nginx:将子目录中的URL重写/redirect到根目录

我想重写或redirect到一个子目录内的任何url,如下所示: www.site.com/subdirectory/item => www.site.com/item 我试过这个,但似乎没有正常工作: location /subdirectory { rewrite ^/subdirectory(/.*)$ $1 last; }

用nginx压缩gzip – testing中没有正确报告?

nginx 1.4.2 Google Pagespeed Insights(networking版)报告说我应该在我的网站上压缩一些.js文件。 我已经检查了mime.typesconfiguration文件,它包含了默认的应用程序/ x-javascript js; 指示。 我也通过Firefox进行了validation,Insights报告称,需要压缩的页面会显示为application / x-javascript,但根据Insights的说法,它们似乎并没有被gzip'd.Also 我也确认了nginx.conf有以下这个gzip设置为“on”: gzip_types font/ttf font/opentype application/vnd.ms-fontobject image/svg+xml text/plain text/css image/png image/gif image/jpeg text/xml application/xml application/x-javascript application/x ml+rss text/javascript; 还有什么我可以尝试? gzip似乎在图像和其他资产上运行良好,只是Insights不满意的.js文件。 谢谢, 史蒂夫

Nginxcaching整个网站,同时执行MySQL维护

我目前有一个高stream量的WordPress网站,是完全静态的。 但是它目前通过MySQL数据库生成每个页面(我知道我应该caching内容)。 我将把数据库移动到另一个服务器,这将需要大约20分钟,我希望在MySQL服务器不可用时显示caching版本。 用Nginx单独实现这个很简单吗?

NGINX和PHP-FPM正在下载index.php而不是处理它

php-fpm正在运行: # /etc/init.d/php5-fpm status php5-fpm is running php-fpm正在监听: # netstat -an | grep :9000 tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN /etc/nginx/nginx.conf中的Nginxconfiguration: # Nginx web server main configuration file: /etc/nginx/nginx.conf # user www-data; worker_processes 8; pid /var/run/nginx.pid; events { multi_accept on; } http { default_type application/octet-stream; gzip on; gzip_disable "msie6"; keepalive_timeout 65; sendfile on; tcp_nodelay on; […]

为什么$ request_time有时比$ upstream_response_time大很多?

我有一个HTTPS网站,有时,对于相同的客户端,$ request_time是$ upstream_response_time的10倍,甚至100倍。 我理解2次之间的差异:$ request_time是接收到的第一个字节和发送的最后一个字节之间的持续时间。 有些用户告诉我,他们经历了连接超时,所以我认为这些很长的$ request_time是真正的问题。 这些很长的$ request_time发生GET请求(典型的请求大小:185字节)。 上游是一个fastcgi过程。 我想知道在什么情况下$ request_time可能太高: 没有fastcgi工作人员正在接受连接,$ request_time包含fastcgi进程的“等待时间” 响应不正确(错误的内容长度,分块的响应),客户端正在等待未来的数据 SSL证书:客户端获得我们的SSL证书,请求OCSP并完成SSL连接。 我不知道哪些选项实际上是可能的,我怎么会找出什么是实际上创build长$ request_time。

Nginx的,PHP和URL与他们的PHP文件

我刚刚安装了一个moodle,它的主题是这样的: http://moodle.example.com/theme/styles.php/standard/1380191797/all nginx没有select那个对PHP文件的调用,并且用404代替。 我目前的重写技术围绕着/index.php引用, /index.php可能过时了,但是之前它已经在很多事情上做了很多工作。 这是我目前的configuration。 server { listen 80; server_name moodle.example.com; root /websites/sbmoodle/moodle; index index.php; location / { try_files $uri $uri/ /index.php$request_uri /index.php; } location ~ \.php($|/) { try_files $uri =404; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name$fastcgi_path_info; fastcgi_pass unix:/var/run/php5-fpm.sock; } } 现在我看看Stack Exchange的冷光,在它的末尾( \.php($|/) ),我觉得应该抓住这些。 但是nginx仍然需要404s。 为什么? 是的,我已经testing/theme/styles.php (没有以下path),它工作正常。

nginx或内核排队stream量

我们有一个如下所示的设置: nginx-> haproxy->应用程序服务器 我们正在用nginx终止SSL,它位于一切的前面。 在我们的高峰负载时间,我们正在经历大约2倍的性能影响。 通常需要400毫秒的请求需要800毫秒。 整个互联网需要更长的时间。 问题是,我的日志和图表中没有任何放缓的迹象。 New Relic显示所有应用程序服务器都正确响应,速度没有变化。 Nginx和haproxy在其日志中没有显示任何关于请求放缓的情况,但是我们正在放缓。 尽pipenginx显示我跟踪的一个特定的请求是在整个堆栈中花费17ms,但在上周的高峰负载中需要花费1.5秒钟。 所以,这给我留下了两个select:1)networking问题 – 根据路由器的graphics,我留下了足够多的pipe道。 我只使用1 Gbps端口中的400 Mbps,并且在ifconfig或交换机或路由器中没有错误。 然而,SoftLayerpipe理这个设备,所以我不能亲自validation。 它可能在我们这边,因为内核以及我想,所以我发布我的sysctl值如下: 2)nginx阻止了请求,要么不logging它,要么我没有logging正确的事情。 是否有可能要求排队,因为工人更忙,他们没有得到尽快的行动? 如果实际上发生了这种情况,除了$ request_time之外,我可以loginnginx什么,因为它没有显示任何减速。 而且,如果这可能实际上需要的时间超过了$ request_time指示的时间,那么我该如何去调整configuration来加快速度呢? SYSCTL net.ipv4.tcp_syncookies = 0 net.ipv4.tcp_synack_retries = 2 net.ipv4.ip_local_port_range = 1024 65535 net.ipv4.tcp_fin_timeout = 3 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 16777216 16777216 16777216 net.ipv4.tcp_wmem = 16777216 16777216 […]