家宽建站
首先强调一点,家宽建站仅作为一次尝试,因为国内运营商是不允许家宽对外开放web服务的,要是被找出来可能会有一些麻烦…建议大家玩玩就好。首先要满足两点前提:
- 你的家宽有公网ip
- 当地运营商没有封锁443端口而是只封锁了80端口(比如我这,只阻断了80端口的tcp访问…甚至部分地区80端口也没有封锁?)
大致思路很简单,就是使用cloudflare,开启https回源,让cloudflare的服务器访问源站(家宽下的服务器)的时候使用https访问443端口,另外强制https访问(即用户使用http访问你的网站的时候,在cloudflare处就转换为https)。
本文中,我直接使用了树莓派作为服务器。
准备
首先,由于家宽是动态ip所以需要先配置好ddns,推荐使用该项目https://github.com.cnpmjs.org/NewFuture/DDNS,配合DNSPOD可以实现较快的解析。
另外建议使用第三方CNAME接入(方便自选节点),当然直接使用Cloudflare也是可以的,注册一个cloudflare账号。
接入cloudflare
如果你不是用的dnspod这种智能解析的话,直接在cloudflare里面添加记录,CNAME到ddns的域名并开启cdn即可。
我这里使用了cf partner的cname接入,以萌精灵为例:
- 添加一个CNAME记录,记录名为home 只想我们ddns的域名入 ddns.example.com
- 查看下面的CNAME记录,可以看到一个 home.example.com.cdn.cloudflare.net
- 在dnspod里面添加CNAME记录,记录名home,指向 home.example.com.cdn.cloudflare.net
这样就完成了CNAME接入了,然后需要修改一些cloudflare的配置:
首先修改加密模式为“完全”,不然cloudflare会使用http协议回源,那就访问不到服务器了。
然后前往“边缘证书”页面,开启“始终使用https”,之后我们需要在服务器上安装证书,虽然可以使用自签名证书,但是既然都到这了,那就直接使用cf提供的证书吧,前往源服务器页面,点击创建证书,可以创建一个仅用于cloudflare服务器与源服务器之间的证书,分别由私钥和证书部分,保存到树莓派上。
/etc/nginx/ssl/cert.pem,/etc/nginx/ssl/key.pem。
配置nginx
安装好了nginx之后,修改配置文件 nano /etc/nginx/site-available/default
。添加一个server配置:
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name berry.aoyouer.com;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
listen [::]:443 ssl;
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
}
编辑好保存之后使用systemctl restart nginx
重启一下nginx,之后再访问home.example.com理论上就可以看到nginx的默认页面了。
另外,如果只是想做个文件下载服务器的话,可以在站点配置文件里面加入下面几行来开启nginx的文件索引功能:
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
虽然现在用的是树莓派,不过真的想要用家宽建站的话,完全可以换成更强劲的机器,另外国内到国外的上传速度其实挺快的,基本能跑满上传。就这样,一个免费的(当然还是要电费和网费),性能强劲的建站方案就出现了,当然这种方案玩玩就好,正经做站还是别这样,毕竟存在一定的风险,并且家宽说不定什么时候不稳定断网了/家里停电了呢?