news 2026/10/9 17:35:05

从零搭建个人网站:云服务器、Nginx与HTTPS全流程实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零搭建个人网站:云服务器、Nginx与HTTPS全流程实战

1. 个人网站搭建的整体设计与思路拆解

1.1 为什么选择云服务器而不是虚拟主机或建站平台

很多人第一次动念做个人网站,第一反应是去找那种“一键建站”的平台,拖拖拽拽就能出一个页面。但用过一段时间就会发现,免费套餐限制多、自定义能力弱、数据不在自己手里,想加个自定义功能处处碰壁。我当初也走过这条路,后来果断转向云服务器自建,核心原因有三个。

第一是完全的控制权。服务器在你手里,你想装什么环境就装什么环境,想开什么端口就开什么端口,想换什么程序就换什么程序。这种自由度是托管平台给不了的。第二是成本可控且长期划算。一台入门级云服务器一年下来也就百来块钱,如果赶上活动还能更便宜,而托管平台想要去掉广告、绑定独立域名,往往要付更高的月费。第三是学习价值。自己从零搭一遍,Linux 基础操作、Web 服务器配置、域名解析、HTTPS 证书这些知识全都过一遍,这些技能在别的地方也用得上。

当然,云服务器方案也有门槛。你需要懂一点命令行,需要自己处理安全配置,需要自己维护环境。但说实话,这些东西花一个周末就能摸清楚,后面就是熟能生巧的事。

1.2 整体架构:从域名到页面的完整链路

一个个人网站跑起来,背后其实是一条完整的链路。我用一个生活化的类比来解释:域名就像你家的门牌号,DNS 解析就像快递员根据门牌号找到你家小区,云服务器就是你家的房子,Web 服务器软件就是家里的管家,网站程序就是你家里布置好的房间,而 HTTPS 证书就是给家门加的一把安全锁。

具体来说,用户打开浏览器输入域名,浏览器先向 DNS 服务器查询这个域名对应的 IP 地址,拿到 IP 之后向这台服务器发起请求,服务器上的 Web 服务器软件(比如 Nginx)接收到请求,根据配置决定是返回静态文件还是转发给后端程序处理,最后把内容返回给浏览器渲染出来。整条链路里任何一个环节出问题,网站都打不开。所以搭建的过程,本质上就是把这条链路一段一段打通。

1.3 方案选型的几个关键决策点

在动手之前,有几个决策点需要提前想清楚,不然后面改起来很麻烦。

操作系统选什么。Linux 是绝对主流,其中 Ubuntu 和 CentOS 用得最多。Ubuntu 的软件源更新快、社区文档丰富,对新手更友好;CentOS 稳定但版本更新慢。我个人建议新手直接上 Ubuntu 的 LTS 版本,遇到问题搜索出来的答案也最多。

Web 服务器选 Nginx 还是 Apache。Nginx 在高并发场景下表现更好,配置简洁,现在已经是事实上的主流选择。Apache 历史更久,模块丰富,但配置相对繁琐。个人网站用 Nginx 完全够用,而且网上教程一抓一大把。

网站程序用静态还是动态。如果你只是想放一些介绍页面、作品展示,纯静态 HTML 就够了,速度快、维护简单、安全性高。如果需要博客功能、评论、后台管理,那就需要动态程序,比如用现成的博客系统或者自己写。我的建议是先从静态页面起步,跑通了再逐步加功能。

数据库要不要装。如果网站程序需要存储数据(比如文章、用户信息),那就需要数据库。MySQL 是最常见的选择,轻量场景也可以用 SQLite。不需要的话就别装,少一个组件少一份维护成本和安全隐患。

2. 云服务器选购与基础环境配置的核心细节

2.1 服务器配置怎么选才不浪费钱

打开云服务器购买页面,一堆配置选项容易让人懵。我按实际经验给一个参考。

对于个人网站这种访问量不大的场景,1 核 2G 内存的配置基本够用。如果预算紧张,1 核 1G 也能跑起来,但要注意内存吃紧的时候可能会触发系统杀进程。带宽方面,1M 到 3M对于个人站点足够,除非你要放大量图片或视频。系统盘40G起步,够装系统和常用软件。

这里有个坑要提醒:很多云厂商的“入门套餐”看起来便宜,但续费价格会翻好几倍。买之前一定要看清楚续费价,别只看首年价格。另外,不同地域的服务器访问速度差异明显,选离你主要访问群体近的地域。

注意:购买时留意是否有“突发性能实例”这类字眼,这类实例的 CPU 性能是受限的,平时够用但高负载时会卡。个人网站一般无所谓,但如果你要跑一些计算任务就要避开。

2.2 第一次登录服务器要做的事

买完服务器,你会拿到一个公网 IP、一个用户名(通常是 root)和密码(或密钥)。用 SSH 工具连上去,Windows 上可以用系统自带的终端或者一些图形化工具,Mac 和 Linux 直接开终端就行。

连上之后,第一件事不是急着装软件,而是做基础安全加固。我踩过的坑是:刚买来的服务器如果不做任何防护,几天之内就会被各种自动化脚本扫描和尝试登录。具体要做这几件事。

第一,修改 SSH 默认端口。默认的 22 端口是被扫描最多的,改成一个不常用的端口能挡掉大部分自动化攻击。第二,禁用 root 密码登录,改用密钥登录。密钥登录比密码安全得多,基本不可能被暴力破解。第三,创建一个普通用户用于日常操作,需要管理员权限时再用 sudo,避免一直用 root 操作带来的风险。第四,配置防火墙,只开放必要的端口。

# 修改 SSH 配置文件的示例(路径通常是 /etc/ssh/sshd_config) # 修改端口 Port 你的自定义端口 # 禁用 root 密码登录 PermitRootLogin prohibit-password # 禁用密码登录(改用密钥后) PasswordAuthentication no

改完配置记得重启 SSH 服务,而且在断开当前连接之前,一定要另开一个终端测试新配置能否登录成功,否则配置写错了可能把自己锁在外面。

2.3 系统更新与常用工具安装

安全加固做完,接下来更新系统软件包并安装常用工具。这一步很多人会跳过,但系统自带的软件版本可能比较旧,存在已知问题。

# Ubuntu 系统更新 sudo apt update sudo apt upgrade -y # 安装常用工具 sudo apt install -y curl wget vim git ufw

curl和wget用于下载文件,vim是命令行编辑器,git用于拉取代码,ufw是防火墙管理工具。这些工具后面都会用到。

防火墙配置方面,用 ufw 的话,先允许你修改后的 SSH 端口,再允许 HTTP 和 HTTPS,最后启用防火墙。

sudo ufw allow 你的SSH端口/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable

提示:启用防火墙之前务必确认 SSH 端口已经放行,否则启用后当前连接会断,而且可能连不回去。这是新手最容易翻车的地方之一。

3. 域名解析与网站环境搭建的实操过程

3.1 域名注册与实名认证的注意事项

域名是网站的门面,选一个好记的域名很重要。注册域名本身很简单,在任意域名注册服务商那里搜索、下单、付款就行。但有几个细节要注意。

域名后缀的选择。常见的.com、.net、.cn都可以,.com认知度最高但好域名基本被注册完了。一些小众后缀价格便宜,但部分场景下兼容性可能有问题。实名认证是必须的,国内注册的域名都要完成实名认证才能正常解析,一般提交后一两天内通过。

域名和服务器要在同一家买吗。不一定。域名在哪注册都行,解析的时候把记录指向你的服务器 IP 就可以。但如果在同一家买,管理起来方便一些,解析生效也快。

3.2 DNS 解析配置:把域名指向你的服务器

域名注册好之后,进入域名管理后台,找到 DNS 解析设置。这里要添加一条A 记录,把域名指向你服务器的公网 IP。

具体操作是:记录类型选 A,主机记录填@(代表主域名)或www(代表 www 子域名),记录值填你的服务器公网 IP,TTL 用默认值就行。如果你想主域名和 www 都能访问,就加两条 A 记录。

解析添加后不是立刻生效的,通常几分钟到几小时不等,取决于 TTL 设置和各地 DNS 缓存。可以用ping 你的域名来测试是否已经解析到正确的 IP。

注意:如果服务器在国内,域名解析到国内服务器通常需要域名已完成实名认证,否则可能被拦截。这是合规要求,提前做好就行。

3.3 安装 Nginx 并配置第一个站点

环境准备好之后,开始装 Web 服务器。Nginx 的安装很简单。

sudo apt install -y nginx sudo systemctl start nginx sudo systemctl enable nginx

装完之后,在浏览器输入服务器 IP,如果看到 Nginx 的默认欢迎页面,说明 Web 服务器已经跑起来了。接下来配置你的站点。

Nginx 的站点配置文件通常放在/etc/nginx/sites-available/目录下,然后在/etc/nginx/sites-enabled/里创建软链接来启用。我习惯给每个站点单独建一个配置文件,方便管理。

server { listen 80; server_name 你的域名 www.你的域名; root /var/www/你的站点目录; index index.html; location / { try_files $uri $uri/ =404; } }

这个配置的意思是:监听 80 端口,匹配你的域名,网站根目录指向指定路径,默认首页是 index.html。配置写好后,先测试配置有没有语法错误,再重载 Nginx。

sudo nginx -t sudo systemctl reload nginx

nginx -t这个命令一定要养成习惯,每次改完配置都跑一下,能提前发现大部分低级错误。

3.4 上传网站文件与目录权限设置

网站根目录建好之后,把你的 HTML、CSS、JS 文件传上去。传输方式可以用 scp 命令,也可以用图形化的 SFTP 工具。

# 用 scp 上传文件的示例 scp -r ./本地网站目录/* 用户名@服务器IP:/var/www/你的站点目录/

文件传上去之后,要注意目录权限。Nginx 运行的用户(通常是 www-data)需要对网站目录有读取权限。如果权限不对,访问会报 403 错误。

# 设置目录所有者 sudo chown -R www-data:www-data /var/www/你的站点目录 # 设置目录权限 sudo chmod -R 755 /var/www/你的站点目录

755 的意思是所有者可读写执行,其他人可读可执行。对于纯静态网站这样设置就够了。如果网站程序需要写文件(比如上传功能),那对应的目录要单独给写权限,但不要整个站点都给 777,那等于把门敞开。

4. HTTPS 证书配置与网站安全加固

4.1 为什么必须上 HTTPS

现在浏览器对 HTTP 网站会明确标注“不安全”,用户看到这个提示信任度直接下降。而且 HTTP 传输的内容是明文的,中间任何一个节点都能看到你传输了什么。HTTPS 通过加密解决了这个问题,同时还能防止内容被篡改。

获取证书现在有免费方案,不用花钱。最常用的是通过自动化工具申请和续期,整个过程几分钟就能搞定。

4.2 用自动化工具申请并配置证书

以常见的证书申请工具为例,安装之后运行一条命令,它会自动读取你的 Nginx 配置,识别域名,申请证书,并且自动修改 Nginx 配置加上 HTTPS 相关设置。

# 安装证书工具 sudo apt install -y certbot python3-certbot-nginx # 申请证书并自动配置 sudo certbot --nginx -d 你的域名 -d www.你的域名

运行过程中会提示你输入邮箱(用于证书到期提醒),同意服务条款,然后选择是否将 HTTP 请求重定向到 HTTPS。强烈建议选择重定向,这样所有访问都会自动走加密连接。

证书默认有效期是 90 天,但工具会自动创建一个定时任务来续期,基本不用手动管。你可以手动测试一下续期是否正常。

sudo certbot renew --dry-run

4.3 安全加固的几个实用配置

HTTPS 配好之后,还可以在 Nginx 配置里加一些安全相关的响应头,提升网站的安全性。

# 在 server 块中添加 add_header X-Content-Type-Options "nosniff"; add_header X-Frame-Options "SAMEORIGIN"; add_header Referrer-Policy "strict-origin-when-cross-origin";

这几个头的作用分别是:禁止浏览器猜测文件类型、防止网站被嵌入到其他页面的 iframe 里、控制 Referer 信息的发送策略。都是很实用的基础防护。

另外,隐藏 Nginx 版本号也是个好习惯。在配置文件里加上server_tokens off;,这样出错页面就不会暴露你用的具体版本,减少被针对性攻击的可能。

提示:安全加固不是一次性的工作,而是一个持续的过程。定期更新系统和软件、关注安全公告、检查日志,这些习惯比任何单次配置都重要。

5. 常见问题排查与实操避坑经验

5.1 网站打不开的排查思路

网站打不开是最常见的问题,排查要按链路一段一段来,不要东一榔头西一棒子。

第一步,确认服务器是否正常运行。在云控制台看看实例状态,用 SSH 能不能连上。连不上说明服务器本身有问题,先解决这个。

第二步,确认 Web 服务器是否在跑。sudo systemctl status nginx看一下状态,如果是 stopped 或 failed,先启动或排查错误日志。

第三步,确认端口是否放行。云厂商的安全组和系统防火墙是两层,都要放行 80 和 443 端口。很多人只配了系统防火墙,忘了云控制台的安全组,结果怎么都访问不了。

第四步,确认域名解析是否正确。ping 你的域名看看解析出来的 IP 是不是你的服务器 IP。如果不对,检查 DNS 解析配置。

第五步,看 Nginx 错误日志。日志通常在/var/log/nginx/error.log,里面会记录具体的错误原因,比如权限问题、配置错误、后端连接失败等。

5.2 常见问题速查表

问题现象可能原因排查方法
浏览器提示连接超时安全组或防火墙未放行端口检查云控制台安全组和系统防火墙规则
显示 Nginx 默认页站点配置未生效或域名不匹配检查 server_name 配置和软链接是否创建
403 Forbidden目录权限或首页文件缺失检查目录权限和 index 文件是否存在
404 Not Found文件路径错误或 root 配置不对检查 root 指向的目录和实际文件位置
502 Bad Gateway后端程序未启动或端口不对检查后端服务状态和代理配置
HTTPS 证书报错证书过期或域名不匹配检查证书有效期和绑定的域名

5.3 几个我踩过的坑和独家经验

坑一:改完 SSH 端口没放行就重启。这个前面提过,但真的太容易犯了。改端口之前先在防火墙里放行新端口,改完用新端口测试能登录,再关掉旧端口。

坑二:网站文件用 root 上传导致权限混乱。用 root 通过 scp 上传的文件,所有者是 root,Nginx 读不了。要么上传后改所有者,要么直接用普通用户上传。

坑三:证书自动续期失败没发现。虽然工具会配置自动续期,但偶尔会因为配置变动导致续期失败。建议定期手动跑一下certbot renew --dry-run检查,或者配置一个到期提醒。

坑四:网站上线后就不管了。系统不更新、日志不清理、备份不做,等到出问题的时候才发现什么都晚了。我现在养成的习惯是每周花十分钟看看服务器状态,每月做一次完整备份。

坑五:把所有东西都装在一台服务器上还开了所有端口。数据库、缓存、各种服务全堆在一起,端口全开。一旦某个服务有漏洞,整台机器就危险了。正确的做法是最小化安装,只开必要的端口,服务之间做好隔离。

5.4 网站备份与迁移的实用方案

网站跑起来之后,备份是必须做的事。我见过太多人因为没备份,服务器出问题后几年的内容全没了。

备份分两部分:网站文件和数据库。网站文件直接打包压缩就行,数据库用导出命令生成 SQL 文件。然后把这些备份文件下载到本地或者传到另一个存储位置。

# 打包网站文件 tar -czf backup_$(date +%Y%m%d).tar.gz /var/www/你的站点目录 # 导出数据库(如果用了数据库) mysqldump -u 用户名 -p 数据库名 > backup_$(date +%Y%m%d).sql

可以写一个简单的脚本,配合系统的定时任务,每天自动备份。备份文件保留最近若干份,旧的自动清理,避免占满磁盘。

迁移的话,把备份文件传到新服务器,恢复文件和数据库,改一下 DNS 解析指向新 IP,等解析生效就完成了。整个过程顺利的话半小时以内。

6. 网站上线后的持续维护与功能扩展

6.1 日常维护清单

网站上线只是开始,后面需要持续维护。我整理了一份日常检查清单,按频率来分。

每天:看一眼网站能不能正常访问,检查服务器负载是否正常。这个花不了一分钟,但能第一时间发现问题。

每周:检查系统更新,看看有没有安全补丁需要打。查看一下访问日志,有没有异常的访问模式。清理一下临时文件。

每月:做一次完整备份并验证备份文件可用。检查证书有效期。回顾一下磁盘使用情况,该清理的清理。

每季度:审视一下安全配置是否还有改进空间。更新一下网站内容。检查一下各个服务的版本,该升级的升级。

6.2 性能优化的几个实用手段

个人网站一般访问量不大,性能不是大问题,但做一些基础优化能让体验更好。

开启 Gzip 压缩。在 Nginx 配置里开启后,文本类文件传输时会自动压缩,能显著减少传输体积。

gzip on; gzip_types text/plain text/css application/json application/javascript text/xml; gzip_min_length 1000;

配置静态资源缓存。给图片、CSS、JS 这类不常变的文件设置较长的缓存时间,用户第二次访问就不用重新下载了。

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control "public, immutable"; }

图片优化。上传前把图片压缩一下,或者用 WebP 格式,体积能小很多。这是最容易被忽视但效果最明显的优化。

6.3 功能扩展的方向建议

网站跑稳之后,可以考虑逐步加功能。但我的建议是按需扩展,不要为了加而加。

想写博客,可以装一个现成的博客系统,功能完善、主题丰富。想展示作品集,静态页面加一些 CSS 动画就够了。想加评论功能,可以用第三方的评论服务,省去自己维护数据库的麻烦。想做数据统计,用轻量的统计工具,别装那种特别重的分析平台。

每加一个功能,都要考虑它带来的维护成本和安全风险。一个功能如果几个月都用不上一次,那不如不加。网站的核心价值在于内容,而不是功能堆砌。

6.4 关于成本控制的经验

最后聊聊钱的事。个人网站的成本主要是服务器和域名。服务器方面,新用户优惠力度大,但续费贵,可以关注一些促销节点。域名一年几十块,不算大头。

如果想进一步省钱,可以考虑把静态网站托管到对象存储上,成本比云服务器低很多,而且不用自己维护服务器。但动态功能就受限了。所以这取决于你的网站类型。

我的做法是:主站放在云服务器上,图片等静态资源放到对象存储加内容分发网络,这样既保证了功能灵活性,又降低了带宽成本。这套组合用下来,一年总成本控制在一个很舒服的范围内。

整个搭建过程走下来,最大的体会是:动手之前先把链路想清楚,动手之后每一步都验证再往下走。很多人卡住不是因为技术难,而是因为跳步了,出了问题不知道是哪一环的锅。按部就班来,一个周末就能拥有一个完全属于自己的个人网站。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 17:34:54

S7-1500在汽车焊装自动线的应用与调试经验

从S7-300换到西门子1500PLC,是我做汽车焊装自动生产线这些年最明显的一次技术迭代。白车身焊装线上新线和老线改造,控制层基本绕不开1500,主焊线、地板线、侧围线、门盖线,十几台甚至几十台焊接机器人配上中频点焊机、滑橇输送、E…

作者头像 李华
网站建设 2026/10/9 17:34:52

Agent-Reach:面向AI开发者的智能体调用中枢与API编排引擎

1. 项目概述:Agent-Reach 是什么?它解决的不是“能不能用”,而是“怎么用得稳、用得准、用得省”Agent-Reach 这个名字乍看像某个开源模型或框架,但结合 CLI、API、YouTube、Reddit 等高频热词,以及大量围绕 codex cli…

作者头像 李华
网站建设 2026/10/9 17:31:19

JSP+Servlet手写成绩管理系统:从MVC架构到数据库设计与部署避坑指南

简介:一套基于JSP与Servlet的Web成绩管理系统课程设计源码,面向计算机专业学生与Java Web初学者,覆盖学生、教师、管理员三类角色的完整业务闭环。学生端支持个人信息维护与成绩查询,教师端提供成绩录入、修改、查看与分析&#x…

作者头像 李华
网站建设 2026/10/9 17:29:18

数据库物理模型设计实战:字段类型、索引策略与分区方案落地指南

简介:这份资源聚焦数据库物理模型设计,面向数据库设计人员、后端开发与数据建模学习者,帮助读者理解如何将逻辑模型落地到实际存储系统,兼顾性能优化、存储效率与数据管理。内容以四种核心设计模式为线索,重点讲解主扩…

作者头像 李华
网站建设 2026/10/9 17:27:23

基于卷积神经网络的海洋垃圾识别分类:从数据清洗到模型部署全流程

简介:这是一套面向计算机相关专业学生的毕业设计资源,主题为基于卷积神经网络的海洋垃圾识别分类,适合正在准备毕设、课程设计或期末大作业的学习者,也可作为深度学习项目实战练习的参考。资源包共101个文件,约74.62MB…

作者头像 李华