HHVM服务于多个域

时间:2013-10-01 11:03:40

标签: virtualhost hhvm

我尝试在同一个VPS上托管多个域,使用HHVM来提供页面。

我想知道如何编写VirtualHost以便在/ var / www目录中指向正确的文件夹?

例如xxx.domain.com>> /var/www/domain.com/

3 个答案:

答案 0 :(得分:2)

好消息。自HHVM 2。3(2013年12月13日)发布以来,您可以在FCGI模式下运行HHVM。使用Nginx或Apache,它可以很好地工作。

参考:http://www.hhvm.com/blog/1817/fastercgi-with-hhvm

使用旧版本的HHVM,您可以在内部端口上运行多个服务器实例,即8001,8002等。然后将Nginx配置为反向代理。 (Apache也可以这样做。)

upstream node1{
    server 127.0.0.1:8001;
}

upstream node2{
    server 127.0.0.1:8002;
}
server {
    ...
    server_name server1.com;
        location ~ \.php$ {
        proxy_pass http://node1;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            proxy_redirect off;
            proxy_buffering off;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Ssl on; #only for https
    }
}

server {
    ...
    server_name server2.com;
        location ~ \.php$ {
        proxy_pass http://node2;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            proxy_redirect off;
            proxy_buffering off;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Ssl on; #only for https
    }
}

当然这个设置占用了大量内存。如果可以升级,请使用2.3。

答案 1 :(得分:1)

显然还不可能。根据托管代码的官方github repositoryopen issue与您提出的问题相同,并且标记为 wishlist / 功能请求

解决此问题的最佳方法可能是为每个域运行HHVM服务器(意味着每个域需要不同的根文件夹),并使用Apache或Nginx作为代理。

答案 2 :(得分:0)

在Nginx上,我能够将其发挥作用的唯一方法是将/用作SourceRoot用于HHVM,并在/中添加fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name;我的/etc/nginx/hhvm.conf文件。通过这种组合,到目前为止,我正在运行~7个站点没有问题。我正在运行Ubuntu 13.10 64位。

/etc/hhvm/server.hdf中,将SourceRoot = /var/www更改为SourceRoot = /

Server {
  Port = 9000
  SourceRoot = /
  DefaultDocument = index.php
}

/etc/nginx/hhvm.conf中,在$document_root$fastcgi_script_name;前面添加/:

location ~ \.php$ {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    fastcgi_keep_conn on;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME /$document_root$fastcgi_script_name;
    fastcgi_intercept_errors on;
    fastcgi_read_timeout 300;
    include        fastcgi_params;
}

您可能还需要将fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;更改为fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name;,至少我必须与我一起。

使用/作为您的SourceRoot可能会产生安全隐患 - 我通过防火墙端口9000尽可能地减轻这种影响,因此只有localhost可以访问它。或者您可以使用套接字。不是万无一失,但从我到目前为止所看到的还可以。