买一台最便宜的搭建的网云服务器,装个 Nginx,个外把域名解析过去,访问你的搭建的网网站就能被外网访问了。整个过程不超过半小时,个外成本一年不到一百块。访问我上周刚帮朋友搭了一个,搭建的网用的个外腾讯云轻量应用服务器,2核2G,访问新用户首年 88 元,搭建的网域名在 Namesilo 买的个外 .top,一年 12 块。访问这就是搭建的网全部开销。
先说服务器。个外你不需要什么高配机器,访问个人网站、博客、甚至小型的展示页面,1核1G 都跑得起来。关键是选对位置——国内用户多就选上海或广州节点,海外用户多就选硅谷或新加坡。我习惯用 Ubuntu 22.04,干净,软件源全,遇到问题搜报错信息也容易找到答案。
买完服务器你会拿到一个公网 IP,类似 43.139.72.18 这种。这时候在浏览器里输入这个 IP,大概率是打不开的,因为服务器上还没跑任何 Web 服务。SSH 连上去,两行命令装好 Nginx:
sudo apt update sudo apt install nginx -y 装完再访问那个 IP,你会看到 Nginx 的默认欢迎页。这一步很关键——它证明你的服务器已经在外网上了,只是还没有域名和内容。
接下来是域名。去任何一家注册商买一个,Namecheap、Cloudflare、阿里云都行。买完进 DNS 管理页面,加一条 A 记录,主机名填 @,值填你的服务器 IP。想用 www 子域名就再加一条 CNAME 指向 @。解析生效通常几分钟到几小时,我遇到过最快 30 秒,最慢的一次等了 40 分钟。用 ping 你的域名 来确认,返回的 IP 对了就说明生效了。
域名解析好了,但 Nginx 还不知道这个域名对应哪个站点。默认配置文件在 /etc/nginx/sites-available/default,你可以直接改,也可以新建一个。我倾向于新建,干净:
server { listen 80; server_name yourdomain.com www.yourdomain.com; root /var/www/myblog; index index.html; } 把 yourdomain.com 换成你的域名,root 指向你放网页文件的目录。然后 sudo nginx -t 测试配置,没问题就 sudo systemctl reload nginx。这时候用域名访问,应该能看到你的页面了。
但还没完。HTTP 是明文的,浏览器会标“不安全”,而且搜索引擎也降权。上 HTTPS。Certbot 是目前最省事的方案:
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com 它会自动改 Nginx 配置、申请 Let's Encrypt 证书、设置自动续期。整个过程交互式,问你要不要重定向 HTTP 到 HTTPS,选 2 就行。证书 90 天过期,但 Certbot 会自己续,你基本不用管。
到这里网站已经能被外网访问了。但如果你在国内,还有一件事:备案。服务器在国内的话,不备案域名会被拦截。腾讯云和阿里云都有备案系统,填资料、拍幕布照片、等管局审核,通常 7 到 20 天。不想备案就买海外服务器,香港、日本、新加坡都行,延迟稍高但省事。我自己的博客放在香港,国内访问延迟 60ms 左右,完全够用。
最后说个坑。很多人搭完发现访问不了,八成是防火墙没开。云服务商的控制台里有个安全组,默认只开了 22 端口。你得手动放行 80 和 443。我第一次搭的时候折腾了一小时,最后发现是安全组没配。另外 Ubuntu 自带的 ufw 如果开了,也要 sudo ufw allow 'Nginx Full'。
整套流程走下来,你得到的是一个有域名、有 HTTPS、外网可访问的静态网站。想放动态内容就再装个 PHP 或 Node,想用 WordPress 就再配个 MySQL。但那是下一步的事了。先把这步跑通,你会对“网站是怎么跑起来的”有一个非常具体的认知——它不过是一台别人的电脑,开着 80 端口,等你的浏览器来敲门。