使用nginx做为hiphop-php的前端服务器

在邮件组里看到有人问能不能把多个hiphop-php编译后的程序跑在同一个端口上,想想也是合理的要求。如果一个服务器上跑了多个站点,那肯定都得用80端口,当大家共同租用服务器的时候,这个需求更为强烈。当时我所想到的解决办法是在前面搭个nginx之类的做代理,实际编译后的程序跑在别的端口,然后没过几天就看到了这份wiki - Using nginx as front server to HipHop

简单的nginx配置示例

/etc/nginx/conf.d/ooso.conf:

CODE:
  1. server {
  2.         listen *:80;
  3.         server_name *.ooso.net ooso.net;
  4.  
  5.        location / {
  6.            root   __SERVER_ROOT__;
  7.            index  index.html index.php index.htm;
  8.        }
  9.  
  10.        location ~ \.php$ {
  11.         proxy_set_header   X-Real-IP        $remote_addr;
  12.         proxy_set_header Host www.ooso.net;
  13.         proxy_pass   http://localhost:4247;
  14.       }
  15. }

把hiphop-php编译后的代码跑在4247端口,然后通过nginx把所有对php的请求转发到这个端口,看上去就像我们平常配置的php fastcgi,不是吗?

这样做有什么好处

  • 支持负载均衡
  • 支持ssl
  • 支持gzip压缩
  • 用nginx来挡住DoS攻击
  • 因为我们的代码需要经过编译才能上线,代码多起来这个时间还真不短,不能像之前单纯的php那样爽快覆盖就完事。把经过编译的最新代码部署在别的端口上,用nginx快速切换,应该是一个比较实际的用法。

额外的技巧

看wiki学到的额外技巧。以下配置段可以防止某些人把别的垃圾域名指向你的主机,结果被搜索引擎认为你用多个域名搞了一堆重复的内容建设,降低搜索权重。

CODE:
  1. server {
  2.     listen *:80;
  3.     server_name _;
  4.  
  5.     location / {
  6.         deny all;
  7.     }
  8. }

作者: Volcano 发表于February 28, 2010 at 7:55 am

版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原始出处作者信息及此声明

Tags: ,,

4 条评论 »

  1. lengyan 于 2010-03-02 @ 22:58:47 留言

    把hiphop-php编译后的代码跑在4247端口
    哥哥,这个要怎么跑起来?

  2. jianzi 于 2010-05-05 @ 20:44:59 留言

    终于在fedora中搞定了hiphop-php, 问下兄弟,你是否已经尝试把hiphop-php应用到生产环境呢?

    我正在尝试,我想如果应用在生产环境当中,首先应该解决的问题是如何快速编译和更新程序吧

    看了官方的wiki,说通过分布式编译器使用多台服务器来编译,我想必须得搭建一个这样的编译环境吧

    这对开发人员应该是一个不小的麻烦

  3. Volcano 于 2010-05-05 @ 21:18:14 留言

    还没打算往生产环境应用hiphop-php,一个是因为业务没那么大,用上之后获得的收益很少;另外hiphop-php的相关php扩展还不够,比如常用的memcache,facebook打算把他们自己用的udp memcache client加到hiphop-php里,这需要时间,别的开发者想移植扩展也比较困难。至于编译,我反而觉得这是最后才需要考虑的事情。

  4. 大尾巴 于 2010-05-13 @ 16:45:59 留言

    偶一般用

    server {
    listen *:80;
    server_name _;
    return 444;
    }

    ^^

RSS 为此帖反馈评论

留条评论