两个小的httpd服务器还是一个大的服务器?

时间:2011-08-01 23:26:58

标签: ruby-on-rails ruby-on-rails-3 nginx assets thttpd

我正在优化我的网站以通过不同的域提供静态资源,以便减少下载/上传带宽,并且缓存更容易。

现在,我正在使用Rails 3.1和NGINX以及Passenger。

到目前为止,我已经设置了系统,以便所有资产都通过类似的域提供给我现在拥有的(它不是子域,而是一个不同的域......这样来自真实域的任何cookie将不会在请求中转移)。 NGINX服务器具有以下配置:

server {
listen 80;
server_name similarwebsite.com;
root /path/to/static/files;
}

server {
listen 80;
server_name website.com;
root /path/to/rails/files/public;
}

我发现为资产创建一个独立的环境要好于Rails(我真的不喜欢所有正在进行的抽象只是为了提供一些简单的资产)。

现在我的问题仍然是,我应该将静态文件拆分到像thttpd这样的其他HTTP服务器吗?目前他们都在同一台机器上运行,但所有的资产都将通过thttpd和所有的rails通过nginx进行交付。 thttpd实例可以在不同的IP或端口上运行。只是想知道这是否会使它更快。

有什么想法吗?我走得太远了吗?

3 个答案:

答案 0 :(得分:1)

我相信thttpd非常快,同时在CPU上亮,因此将它用于静态文件可以减少CPU负载。但是,重新启动HTTP连接会花费更多。

答案 1 :(得分:1)

分离静态内容的好主意。也许你应该更进一步,使用CDN(内容分发网络)。我使用过Akamai和亚马逊的Cloud Front,每个都有与其性能相关的成本。还有便宜的(免费的!?)替代品。有关更多信息,请参阅CDN的Wiki页面:http://en.wikipedia.org/wiki/Content_delivery_network

答案 2 :(得分:0)

事实证明,我只是坚持使用一个NGINX http服务器来同时提供动态和静态文件。静态文件位于不同的域下,此解决方案是配置工作量最少的最佳解决方案。