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的所有好处。 我的问题是,如何才能在一个虚拟主机上完成?

这里是我们现在可以设置的一个例子:

问题:

  1. 我们能否放弃拥有3个独立的Nginxconfiguration(虚拟主机),并将每一个结合起来? 如果是这样的话,那么在单个configuration中如何configurationNginX的例子将会非常棒!
  2. 我们如何能够保持上述目标,并将X地址转发给后端iis机器?
  3. 如果我们的Nginx服务器出现故障,那么会有什么build议呢? 上面的设置是我们的单点故障。 将上面的设置与两个Linux服务器,与DNS故障转移的组合或只有双DNSlogging修复了让我们的Nginx服务器的问题?
  4. Nginx的资源如何? 假设一个只有768mb ram的Azure Extra小“微”实例可以处理50-100个并发访问者是否安全?

提前致谢!!!!!


参考文献:

NginX Pagespeed: http : //ngxpagespeed.com/ngx_pagespeed_example/

NginX反向代理: http ://www.andrewparisio.com/2011/02/how-to-create-reverse-https-failover.html

  1. 是的,将这些nginx服务器合并成一个是完全可能的。 只需使用proxy_pass。
  2. 请参阅http块中的代理集头
  3. 双NGINX机器(相同的configuration)结合DNS循环(或者像AWS负载平衡器在前面,不知道你是否有类似Azure的东西)
  4. 至less。 你应该考虑在1000年与NGINX的联系。 你的IIS可能是瓶颈。 (我没有考虑到额外的负载Pagespeed处理将放在这个设置,你将不得不试一试,找出)

首先在你的http块中放入:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; upstream pagespeed { server 127.0.0.1:8081; # weight=10 max_fails=3 fail_timeout=30s; } upstream iis { server 192.168.0.100:80; weight=10 max_fails=3 fail_timeout=10s; server 192.168.0.101:80; weight=10 max_fails=3 fail_timeout=10s; } 

那么你将只需要下面的服务器块(剥离)

  server { listen 443; #SSL offloader server_name example.com; #do some ssl things here location / { proxy_pass http://pagespeed; #proxy to pagespeed on same nginx } } server { listen 8081; server_name example.com; #do some pagespeed things here #pagespeed on location / { proxy_pass http://iis; # proxy to 2 backend IIS servers } } 

在上游configuration中使用unix套接字,以获得更好的性能。 你也可以把pagespeedcaching放在Memcached中。