nginx反向代理配置(附:tornadoweb.cn的nginx配置)

Posted on Sat 11 June 2011 in IT • 1 min read

GAE的Hosting站点 appspot.com在国内被墙,因此架设在GAE上的运用没法直接访问,需要曲线救国,其中一招比较有效的方式即是通过nginx反向代理来实现,不过这个要求你在国外有一个可用的nginx。下面以tornadoweb.cn为例讲述如何用nginx配置反向代理(注:tornadoweb.cn为tornadoweb.org的镜像站点,原站就是在GAE上,因此国内无法直接访问)。关于nginx的基本配置部分请参考我在poweredsites上的博客how-to-setup-nginx,本文只讨论如何配置tornadoweb.cn这个站点,配置说明详见配置中的注释。

server {
   # 监听80端口,通常可以省略。
    listen   80;

   # 要配置的站点域名,即用来曲线访问GAE上的原站点的域名。
    server_name  www.tornadoweb.cn;

    # Ben老大要求tornadoweb.cn有说明是镜像站点以区别于原站tornadoweb.org,
    # 因此我走巧将头上的LOGO采用修改过的本地文件,在原logo上加了mirror的声明
    location /static/tornado.png {
        # LOGO文件tornado.png所在文件夹目录
        root /mnt/ebs/sites/tornadoweb;
    }

    location / {
        # 配置反向代理到 www.tornadoweb.org,对于没有绑定域名的GAE运用来说,会是http://python-tornado.appspot.com这样的。
        proxy_pass http://www.tornadoweb.org;
        # 关闭重定向跳转
        proxy_redirect off;
        # 转发IP等HTTP头信息
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

# 下面几个是将www.tornadoweb.com.cn也跳转到www.tornadoweb.cn,并且将域名根目录tornadoweb.cn这样的访问也跳转到www下,
# 这个反之亦然(现在多是这种,即www跳转到域名根目录)。
server {
    server_name  tornadoweb.com.cn;
    rewrite ^(.*)$ http://www.tornadoweb.cn$1 permanent;
}

server {
    server_name  www.tornadoweb.com.cn;
    rewrite ^(.*)$ http://www.tornadoweb.cn$1 permanent;
}

server {
    server_name  tornadoweb.cn;
    rewrite ^(.*)$ http://www.tornadoweb.cn$1 permanent;
}

配置好后reload/restart一下nginx就妥了,本例的结果即是访问tornadoweb.cn将看到tornadoweb.org一样网站,除了采用了本地文件的那个LOGO不同外。