我们目前在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场特征)。
问题:
提前致谢!!!!!
参考文献:
NginX Pagespeed: http : //ngxpagespeed.com/ngx_pagespeed_example/
NginX反向代理: http ://www.andrewparisio.com/2011/02/how-to-create-reverse-https-failover.html
首先在你的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中。