众所周知,不备案是不能使用国内服务器作为网站空间的,只能使用香港或者国外的主机,而主机的速度和主机的位置关系很紧密!一般国内的服务器在速度上远超国外服务器!备案会有利于收录和排名等,好处不言而喻,但是走一遍备案流程有多麻烦,收快递拍照、审核、复核不说,在备案期间这个域名还不能访问,走完流程大概得一个月。 本着折腾的原则,想到了nginx的反向代理。尝试了几次,完美绕过备案。(临时使用,建议备案) 环境:已备案的服务器或国外服务器一台(简称服务器A),未备案服务器一台(简称服务器B),两台都是centos7系统,两台都默认安装宝塔面板(LNMP+Nginx环境)。 ##一、原理 云服务器提供商如果检测到你这个域名解析到了他的服务器,且未备案,就会劫持掉服务器的80和443端口,跳转到备案提示的页面,导致一打开网址就会出现页面未备案的提示。后来经过反复测试发现,如果把web端口改成其他端口,如1234,那么就不会被劫持。例如在阿里云中,我们可以把未备案的B服务器的web端口改成 1234,然后通过 http://服务器ip:1234 的方式来访问。既然这样,那我们可以利用nginx的端口转发和反向代理功能,把上面未备案B服务器的1234端口转发到备案的的A服务器的80端口,然后把域名解析A服务器,就可以通过A服务器转发请求到B服务器,实现绕过网站备案功能了。 ## 二、准备工作 1.域名直接解析到A服务器,A服务器需要正常添加一个网站,监听80端口,并绑定域名,把该域名的80端口访问请求转发到B服务器的1234端口。 2.对于B服务器来说,用户访问的操作相当于A服务器访问B服务器,是通过IP访问的,因此不需要添加域名,直接监听1234端口即可。 3.如果需要添加多个网站,可以通过端口来区分。 4.无论何种情况,B服务器是最终的web服务器,A服务器只是做了下转发,因此网站如果需要添加https、301跳转之类的,直接在B服务器上配置即可。 ## 三、具体操作 登录B服务器的宝塔面板,打开网站的配置文件  将listen 80改为 listen 端口号(如1234)点击保存。 尝试通过IP+端口访问地址为:http://服务器ip:1234 , 访问成功进行下一步。 登录A服务器的宝塔面板,打开网站的反向代理。  将目标URL改为http://服务器ip:1234 ,开启代理和高级功能。点击保存。 重新启动Nginx。 这样已经成功完成了端口转发和反向代理,完美绕过备案。 ## 四、常见问题 1.配置完成后,访问域名提示502 Bad Gateway。 答:这是由于A服务器访问B服务器,连接超时或者连接被拒绝导致。请关闭防火墙,并将安全组配置中相应的端口开放。如果问题依然存在,请查看两台服务器配置的端口是否一致。 2.配置完成后,访问提示找不到服务器IP地址。 答:这是由于你的域名解析错了,请确认域名成功解析到了A服务器地址,没有手滑填错A服务器的IP。 3.配置完成后,访问依然提示备案。 答:还是域名解析的问题,请把域名解析到备案的A服务器,而不是B服务器。 4.配置的时候,重启nginx这一步报错。 答:请检查配置文件有没有改错了,对照本文认真仔细检查一遍。 5.需要添加SSL(https)。 答:在B服务器上配置证书,并把SSL默认的监听端口443改成相应的转发端口即可(如1234),另外如果配置了https,请做一下强制https跳转,避免出错。 6.需要开启访问日志。 答:访问日志请在A服务器上开启,nginx配置文件中,请把access_log off 改成 access_log /xxx/xxx.log 然后用touch创建一下这个log文件,并用 chown -R www:www /xxx/xxx.log给这个log文件权限。 最后修改:2020 年 02 月 08 日 09 : 29 PM © 著作权归作者所有 赞赏 如果觉得我的文章对你有用,请随意赞赏 ×Close 赞赏作者 扫一扫支付 支付宝支付 微信支付
这样,域名会被墙吧。
牛逼牛逼,学习了
哈哈哈,商业胡吹