Articles of nginx

使用nginx + haproxy负载平衡下载服务器

我需要一些信息。 我一直在寻找这个解决scheme遍布谷歌,但无法find它。 我正在尝试安装HAProxy来平衡下载器在一台服务器中,而不是像其他服务器那样将configuration发送到互联网上。 我需要设置haproxy,以便将本地端口80的连接绑定到localhost中的端口8081,8082,8083。 我所问的问题是,我需要为这些端口设置多个nginxconfiguration吗? 我可以使用Thin应用程序来设置瘦服务器吗? 我有一个很大的麻烦理解如何做到这一点。 任何人都可以指向正确的方向吗?

在AWS Ubuntu 11.10 EC2上的低stream量Nginx,当monittesting时返回499,为什么?

我有一个非常低的stream量Nginx框,作为外部服务的反向代理。 如果它崩溃,我有Monit的框重新启动nginx 。 不用说, nginx每天至less在这台机器上停一次, monit不得不重启它。 这是我的monitconfiguration: check process nginx with pidfile /var/run/nginx.pid start program = "/etc/init.d/nginx start" stop program = "/etc/init.d/nginx stop" if cpu > 60% for 2 cycles then alert if cpu > 80% for 25 cycles then restart if totalmem > 400.0 MB for 5 cycles then restart if children > 250 […]

nginx反向代理,ssl卸载,caching和pagespeed在一个。

我们目前在Windows IIS 7服务器上托pipe所有东西。 我们只是搬到了Azure,就像托pipeWindows的许多云比托pipeLinux一样昂贵。 对于虚拟机(与AWS相比),Azure有自己的限制,因为您只能将一个公有IP地址绑定到Web服务。 为了克服这个限制,并build立一些故障切换和cachingfunction,我们将NginX视为负载均衡器,将逆向代理放在我们的IIS服务器前面。 最近我们了解到Google的Pagspeed for Apache也适用于NginX。 基于在线教程和我们的一点经验,我们可以通过使用3个独立的Nginx服务器层(见下面)来获得NginX的所有好处。 我的问题是,如何才能在一个虚拟主机上完成? 这里是我们现在可以设置的一个例子: Nginx1 – 这个服务器位于Nginx2的前端,并执行SSL卸载并将静态内容caching到正在运行的Linux服务器上。 它会将静态资源caching到磁盘和内存。 NginX2 – 这个Nginx服务器位于Nginx3之前,包括Nginx的Google Mod Pagespeed。 这个服务器的目标是分配和合并脚本并优化图像。 由于这些操作可能很昂贵,所以我们把NginX1放在这个服务器的前面。 NginX3 – (如果我们一次运行3个Nginx实例,HA代理也可以工作)。 这是Linux机器上运行的最后一个Nginx服务器。 它的工作只是作为我们的IIS场的反向代理。 这个想法是,如果我们启动另一个IIS服务器(目前我们只有两个),那么我们只是把它添加到这个NginX的configuration,Nginx负责平衡。 我们仍然使用粘滞会话(由于一些马虎asp / asp.net代码),但至less我们可以划分不同虚拟机之间的工作量,并通过在我们的“IIS场”中添加一台机器来扩展(不使用IIS场特征)。 2X IIS服务器 – 这些只是iis服务器(全部相同),其中有多个站点configuration和网站通过FTP或Git加载到他们。 问题: 我们能否放弃拥有3个独立的Nginxconfiguration(虚拟主机),并将每一个结合起来? 如果是这样的话,那么在单个configuration中如何configurationNginX的例子将会非常棒! 我们如何能够保持上述目标,并将X地址转发给后端iis机器? 如果我们的Nginx服务器出现故障,那么会有什么build议呢? 上面的设置是我们的单点故障。 将上面的设置与两个Linux服务器,与DNS故障转移的组合或只有双DNSlogging修复了让我们的Nginx服务器的问题? Nginx的资源如何? 假设一个只有768mb ram的Azure Extra小“微”实例可以处理50-100个并发访问者是否安全? 提前致谢!!!!! 参考文献: NginX Pagespeed: http : //ngxpagespeed.com/ngx_pagespeed_example/ NginX反向代理: […]

奇怪的等待来自node.js的静态文件在nginx代理后面expression

好的,所以标题可能有点混乱,但是这个问题真的是这样! 首先是第一件事:一点背景。 我正在为客户build立一个CI服务器,这个服务器应该用于自动testing和构build,以及他们提出的与CI有关的任务。 正在testing的解决scheme主要是networking解决scheme,这些解决scheme都在MII / NetWeaver Web服务器上运行。 这个Web服务器向开发人员提供了一个工具,它允许你在你的HTML中插入“代码片段”,然后在发送到浏览器之前,用一个可定制的值代替它。 很聪明。 但是,为了能够testing客户端代码,我需要尽可能使testing系统与此MII Web服务器分离。 所以我创build了一个小型的Node.js服务器应用程序,它就是这样做的 – 用configuration的值replaceHTML中的代码片段。 这很好用! 但是,我无法访问服务器API来testing客户端代码。 所以,使用nginx,我创build了一个反向代理,它将所有/ XMII / *请求转发给MII服务器。 简单,而且效果很好! 为了让所有的东西一起工作,我还为我的Node.js应用程序创build了一个反向代理。 这样,2个独立的服务器可以在同一个端口上访问,就像用户所期望的那样。 但是,在配对2(Node.js服务器和nginx反向代理服务器)的时候,我会在加载一些客户端文件的过程中看到1分钟(准确的说! 它从只有一个文件,到几个文件有所不同。 以下是一些屏幕截图,从Google Chrome的POV中完整显示发生了什么: 它说,它已经等待了1分钟的文件,并收到它在0毫秒? 这看起来更正常。 这里是我的configuration文件的Node.js服务器和nginx代理。 我已经删除了篡改HTML正文的代码,因为注释它们对性能没有任何影响。 Node.js服务器: var BASE = 'C:/Users/twj/Documents/git'; var CUSTOM_ATTRIBUTES = null; var http = require('http') ,express = require('express') ,tamper = require('tamper') //Used to tamper with the […]

Nginxredirect和地理定位

我有以下Nginx和GeoIP的问题,如果你能给我一些关于解决scheme的指针,会很好。 注意:我知道这可以在DNS端解决,但现在不可能,所以我正在寻找其他解决scheme。 问题 我的www.domain.com有一个1.1.1.1的IP地址,位于运行Nginx的亚马逊上,有一个像这样的redirect: location / { proxy_pass http://2.2.2.2 proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 在2.2.2.2上还有另一个使用geoIP的nginx。 问题是我的所有客户端似乎都来自1.1.1.1,因为第二个nginx由$remote_addr地理定位。 有什么方法可以捕获真正的客户端IP(1.1.1.1上的$ remote_addr),并将其作为不同的variables传递给2.2.2.2并在地理定位中使用它? 任何提示,评论或RTFM是值得欢迎的。 我会继续寻找一个解决scheme来试图回答这个问题。 谢谢。

每个外部网站上的nginx 502坏网关

我刚刚安装了nginx,并按照官方网站上的指导,使用php5-fpm进行设置,但它不能正常工作。 甚至没有默认网站,没有PHP是在我的服务器以外的工作。 试试listen = 127.0.0.1:7777和listen = /var/run/php5-fpm.sock两者都不起作用。 我可以在我的服务器上使用lynx访问http://localhost ,但不能从其他地方访问(显然是使用外部IP)。 是的, php5-fpm deamons正在运行,是的端口(80和7777)被打开。 不要使用php-cgi 。 我的configuration: user www-data; worker_processes 4; 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; […]

nginx repomd.xml 404找不到

我按照http://wiki.nginx.org/Install中的规定设置了nginx存储库 [nginx] name=nginx repo baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/ gpgcheck=0 enabled=1 当我尝试安装php-fpm时,出现以下错误 http://nginx.org/packages/rhel/6Server/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 – "The requested URL returned error: 404 Not Found" Trying other mirror. Error: Cannot retrieve repository metadata (repomd.xml) for repository: nginx. Please verify its path and try again 什么是我可以替代的另一个稳定的baseurl?

优化nginx / php-fpm / postrgresql

我有: CPU E5-2407(quadcore Xeon 2.2GHz) DDR3内存16GB RAID1 Intel520 SSD 240GB 我自制的应用程序在7个页面上使用永久的PG连接(一个由客户作为API调用,另一个由具有10s计时器的CURL bash循环调用)+网站。 在API页面上,每天的通话量将达到100万次(现在大概是每天1000次)。 API页面angular色只是将数据插入到表中,然后由循环处理来处理。 我会用一个C程序在一个月内更改bash循环,所以API页面将是唯一使用nginx调用的(除了网站,但与API相比,它将是一个非常小的体积)。 你会推荐nginx / PG / FPM的进程/subprocess/caching/缓冲区的设置? 谢谢 :)

nginx error_page指令代理静态url的内容

我正在尝试使用error_page,如下所示,以捕获错误,然后从外部URL中读取内容,并将其发送到客户端: error_page 404 =404 @err404; location @err404 { proxy_pass http://www.myserver.com; } 这是在“服务器”指令。 我希望任何404被这个(它是) – 然后从http://www.myserver.com读取内容 – 并返回作为404的正文返回到客户端。 这几乎工作 – 但是当我尝试访问http://myserver/somenonexistingURL ,代理通过http://www.myserver.com/somenonexistingURL – 这似乎是无益的 – 有没有办法让它只是代理内容的确切我input了什么? 没有代理整个请求? 如果我放 error_page 404 http://backend 然后我得到一个30X的redirect(按照文档) – 这不是我想要的。 有任何想法吗? 文档: http : //wiki.nginx.org/HttpCoreModule#error_page和http://nginx.org/en/docs/http/ngx_http_core_module.html#error_page

为什么uWSGI不加载在nginxconfiguration中指定的应用程序?

我有一台服务器使用nginx(1.1.19)和uWSGI(0.9.8)服务多个Django站点。 uWSGI在VirtualHosting模式下运行,并按照文档中的说明dynamic加载应用程序: http ://projects.unbit.it/uwsgi/wiki/VirtualHosting 目前有5个Django站点在服务器上运行,像这样的nginxconfiguration: # /etc/nginx/sites-enabled/www.example.com server { listen xxx.xxx.xxx.xxx:80; server_name www.example.com example.com; if ($host != 'www.example.com' ) { rewrite ^/(.*)$ http://www.example.com/$1 permanent; } location / { uwsgi_pass 127.0.0.1:8000; include uwsgi_params; uwsgi_param UWSGI_CHDIR /var/www/www.example.com/wsgi; uwsgi_param UWSGI_SCRIPT production; uwsgi_param UWSGI_PYHOME /var/envs/www.example.com; } } 其他4个站点的configuration方式完全相同,用example.comreplace了真实域。 uWSGI使用以下选项运行: /usr/local/bin/uwsgi –socket $SOCKET –chmod-socket –master –harakiri $HARAKIRI –sharedarea $SHAREDAREA –processes […]