因为某些需要,常常需要在无IPv6的环境中访问一些纯IPv6网址。但是以前的处理方法是挂上一个双栈代理然后访问,这样的访问过于麻烦,之前群里提供的各种反代域名也多因为种种原因“消失”了~
正好自己手头上有空的VPS,正好可以搭建反代域名来访问。
2020.02.23 本人自己搭建的反代域名已经关闭,请自己另行搭建使用。
安装Nginx、设置DNS记录
- 使用包管理器、源代码编译、LNMP一键脚本等方式安装Nginx,这里我使用军哥的lnmp一键脚本配置来搭建本服务器终端的LNMP环境。
配置虚拟主机:参见 http://lnmp.org/faq/lnmp-vhost-add-howto.html ,lnmp原作者的方法已经很详细了,这里就不买丑了~
(只需要反代的话,就直接在Nginx配置目录中添加conf配置文件即可,不一定需要通过下列命令创建。 使用`lnmp vhost add`创建一个网址为“byr.rhilip.info”的虚拟主机,想要指向bt.byr.cn。因为是一个纯粹的反代服务,所以输入使用的domain后,剩下的选项一路No就好了~
- 在域名提供商处添加A记录
配置Nginx核心文件
- 进入LNMP一键包的虚拟主机配置文件夹,找到刚刚创建的“byr.rhilip.info.conf”文件,并编辑(请自己百度vim编辑器的使用方法喵~)。
vi /usr/local/nginx/conf/vhost/byr.rhilip.info.conf
删除之前系统生成的代码,填入以下代码,注意修改server_name和proxy_pass部分。
server
{
listen 80;
server_name byr.rhilip.info;
location / {
proxy_pass http://bt.byr.cn/;
proxy_redirect default;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
条目解释:
server_name : 访问的代理网站地址 proxy_pass : 欲代理的网站地址 proxy_redirect :对发送给客户端的URL进行修改。在很多反代的教程中,我看到这里都是no,但是这种情况下,直接访问我们的代理网站地址,会被重定位到我们想要代理的网址,故而不能实现我们想要实现的功能;所以改成default(将根据location和proxy_pass参数的设置来决定url)~ proxy_set_header : 用于记录访问用户的真实IP地址
- 测试规则是否正确
/usr/local/nginx/sbin/nginx -t
若提示:“the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok configuration file /usr/local/nginx/conf/nginx.conf test is successful”表示正常,若有错误请根据错误提示排除问题。
- 重载nginx规则
service nginx reload
屏蔽搜索引擎收录
因为该网站的特殊性,我们并不想让搜索引擎收录到这个反代域名。常见的反收录方法有robots.txt的方式,但是在我们的前一部设置,导致直接在域名文件夹中建立robots.txt的方式无效。所以我们需要使用其他的方式解决。
另外的一种方式就是在nginx的配置文件中用User-agents方式屏蔽常见的爬虫。在前面的conf文件的service字段中添加
if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot")
{
return 403;
}
最终形成的xxx.rhilip.info.conf文件内容为:
server
{
listen 80;
server_name xxx.rhilip.info;
if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot")
{
return 403;
}
location / {
proxy_pass http://bt.byr.cn/;
proxy_redirect default;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
重新执行命令service nginx reload
,重载nginx规则。
最后,我们可以使用站长工具中的 搜索蜘蛛、机器人模拟抓取工具 来确定我们的屏蔽是否成功~
2018.01.24 更新
- 如果你需要解决反代图片显示问题,请使用 ngx_http_substitutions_filter_module ,并在location字段中添加
subs_filter src="https?://bt.byr.cn/ src="/ ir;
即可。 - 如果你需要使用https方式访问你的反代域名,请考虑使用301的形式进行跳转。并可考虑将proxy_pass值改为 https://bt.byr.cn/ 。
如果你想同时实现v4纯挂钟(不建议),请考虑将你本地ut客户端的tracker地址中域名改为你建立的反代域名。(因为bt.byr.cn与tracker.byr.cn目前是alias的关系)
2018.09.05 更新
- 因为站点对单一IP总数有上限,故禁止反代用户使用signup.php访问。在进入反代的location前,先deny掉。
location ~ signup\.php { deny all; }
- 如果你的Nginx有lua模块,则可以使用lua模块输出相关提示信息。
location ~ signup\.php {
content_by_lua_block {
ngx.header.content_type = "text/plain";
ngx.print('It\'s not allowed to use My reverse proxy to Signup any accounts in BYRBT~ by Rhilip, 2018.09.05')
ngx.exit(403)
}
}
本人目前使用配置为
root@Rhilip:~# cat /usr/local/nginx/conf/vhost/byr.rhilip.info.conf
server {
listen 80;
server_name byr.rhilip.info;
include no-spyder.conf;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name byr.rhilip.info;
include no-spyder.conf;
client_max_body_size 40m;
ssl_certificate /etc/cert/ssl.crt;
ssl_certificate_key /etc/cert/ssl.nopass.key;
ssl_session_timeout 5m;
location ~ signup\.php {
content_by_lua_block {
ngx.header.content_type = "text/plain";
ngx.print('It\'s not allowed to use My reverse proxy to Signup any accounts in BYRBT~ by Rhilip, 2018.09.05')
ngx.exit(403)
}
}
location / {
proxy_pass https://bt.byr.cn/;
proxy_redirect default;
proxy_set_header Accept-Encoding "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
subs_filter src="https?://bt.byr.cn/ src="/ ir;
subs_filter href="https?://bt.byr.cn/ href="/ ir;
}
}
root@Rhilip:~# cat /usr/local/nginx/conf/no-spyder.conf
if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot") {
return 403;
}
2019.09.30 更新
傻逼百度把本人反代站点排在“BYRBT”等搜索关键词的第一位,此外,登录和注册功能被某些二逼玩坏了(而且本人觉得这样挺好的)。
所以使用subs_filter
方式,替换部分返回,当你访问本人反代的时候,会提示你如下信息:
给被百度坑害的孩子一个正确的链接。。。。
谢谢,对我来说还是挺有用~~
另外问一下,这种模式下tracker怎么用
文章里面说了
啊明白了,改过来了,刚刚是我nginx的docker挂了。但是现在报502 bad gateway了(
明白了,是docker默认没开ipv6。。。我直接改host网络模式了
提问:您将tracker部分划掉了是说现在不行了还是仅仅是不推荐使用呢
仅仅不推荐。用反代作为announce地址会让tracker抓到反代服务器的ip,可能会让管理认为同一ip下多个用户作弊。
提问:我搭好了之后套上cf,就没法访问了,看nginx日志全是301,这是为啥呀
我又明白了,301是因为纯http被301,而我的cf的tls调的flexible,所以cf会用http访问vps。改成strict就好了