由于鄙人很多应用都部署在GAE上,并绑定了相应的域名,所以ghs.google.com显得尤为重要。前段时间,其频繁遭到那个啥啥啥的骚扰,而解决ghs.google.com被封的终极解决方案就是反向代理,于是我再次踏上一条不归路。
运行环境:位于美帝的VPS,Ubuntu9.04
安装nginx和vim,此方式安装的nginx,版本可能较低,但不影响反向代理功能,若需安装更高版本,可修改Ubuntu的软件源。vim为可选安装,方便后续修改配置文件。
apt-get install vim apt-get install nginx
启动nginx:
/etc/init.d/nginx start
修改nginx的配置文件:
vim /etc/nginx/sites-available/default
在配置文件中加入以下内容:
upstream ghs {
ip_hash;
server ghs.google.com;
server 72.14.203.121;
server 72.14.207.121;
server 74.125.43.121;
server 74.125.47.121;
server 74.125.53.121;
server 74.125.77.121;
server 74.125.93.121;
server 74.125.95.121;
server 74.125.113.121;
server 216.239.32.21;
server 216.239.34.21;
server 216.239.36.21;
server 216.239.38.21;
}
server {
listen 202.248.185.66;
server_name *.stevenwang.name;
access_log /var/log/nginx/ghs.stevenwang.name.log;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_pass http://ghs;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect false;
}
}
其中,202.248.185.66是主机的IP,*.stevenwang.name是需要代理的域名,按需修改。
重启nginx:
/etc/init.d/nginx restart
至此,反向代理就已配置成功,而后只需将相应域名的A记录指向主机IP。但在这样的配置下,nginx可以将对任意一个域名的请求转发到ghs.google.com,而我们有时只希望转发指定域名的请求,此时,需要加入转发规则,如下:
server {
listen 202.248.185.66;
server_name *.com *.cn *.org *.mobi *.tel *.asia *.net *.name *.me *.tv *.cc *.hk *.biz *.info;
location / {
root html;
index index.html index.htm;
}
}
即将其他域名请求都转向nginx主页,若要增加允许转发的域名,只需在第一个server的server_name里添加,当server_name中信息过长时,也许你需要设置server_names_hash_bucket_size属性。
--End--



这个可以试试。