用Nginx反向代理Feedburner


虽然博客将死,RSS将死的言论越来越盛,但如果真的要代理Feed,除了Feedburner可能没有更好的选择了,Feedsky什么的各种不靠谱。至于要反向代理Feedburner的原因我就不说了,老舍先生的茶馆里已经说的很清楚了。

实现的主要问题是:个人的Feedburner页面和页面中其他元素的目录结构不同。
如,我的Feedburner页面地址是http://feeds.feedburner.com/huxuan,
而其他如定义xml结构的xsl文件地址是http://feeds.feedburner.com/~d/styles/rss2full.xsl。
所以不能简单的反向代理个人页面,更不能直接反向代理feedburner根目录。
折腾纠结了两天,经过向 lqswkl 两位大牛请教,得到了两条不同的思路。

思路一:根目录反向代理http://feeds.feedburner.com,并将根目录重定向至/huxuan。
需要注意只重定向根目录,不重定向根目录下的文件和子目录,不然会无法访问其他文件的错误,配置代码如下:
[shell]
server
{
listen 80;
server_name feeds.huxuan.org;
access_log /home/huxuan/.log/www/feeds.huxuan.org.access.log;
error_log /home/huxuan/.log/www/feeds.huxuan.org.error.log;

location /
{
proxy_pass http://feeds.feedburner.com;
proxy_set_header Host feeds.feedburner.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite ^/$ /huxuan break;
}
}
[/shell]

思路二:仅根目录反向代理http://feeds.feedburner.com/huxuan,其他非根目录(根目录下的文件和子目录)都用正则匹配反向代理至http://feeds.feedburner.com
[shell]
server
{
listen 80;
server_name feeds.huxuan.org;
access_log /home/huxuan/.log/www/feeds.huxuan.org.access.log;
error_log /home/huxuan/.log/www/feeds.huxuan.org.error.log;

location = /
{
proxy_pass http://feeds.feedburner.com/huxuan;
proxy_set_header Host feeds.feedburner.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location ~* ^/.+
{
proxy_pass http://feeds.feedburner.com;
proxy_set_header Host feeds.feedburner.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
[/shell]

以上两种方法均经过验证,思路一简洁一些,思路二直接一些,如有问题欢迎交流。


4 responses to “用Nginx反向代理Feedburner”

    • @陽 Apache中应该也有反向代理的实现,不过这是Nginx的特长,所以最好还是用nginx来搞。

  1. @Xuan Hu
    不過我目前用的是Apache的虛擬主機
    我是通過新增一個站點,然後給該站點綁定子域名feed.yyr.im,再給該站點根目錄的.htaccess增加如下代碼,實現了反向代理Feedburner。
    #RewriteEngine On
    #RewriteBase /
    #RewriteRule ^(.*)$ http://feeds.feedburner.com/$1 [P]
    但是我不知道如何重定向到我的用戶名 /yyr 里去,在網上找根目錄定向子目錄的代碼加進去都沒效果,只能用feed.yyr.im/yyr/ 來訂閱。

    • @陽 直接将后面重定向的地址设置成带子目录的会有问题么?建议乃Google一下“Apache redirect feedburner”,大概看了一下应该有很多造好的轮子的~

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.