我的网站是如何通过 Nginx 部署的?

我的网站是如何通过 Nginx 部署的?

你好,我是悟空。

我的网站 passjava.cn 已经稳定运行两年多了,购买的服务器是很便宜的那种,1个 CPU,1G 内存,1MB 带宽。我在这个服务器上部署了我的个人网站。

部署方式

项目是纯静态页面,部署在了一台服务器上。如下图所示,当我在浏览器访问这个域名时,请求会先经过 DNS 域名解析,拿到域名绑定的 IP 地址,而这个 IP 地址又是我购买的云服务器地址,在这个服务器上有网站的静态页面。

DNS 原理

当需要访问passjava.cn这个站点时,会在浏览器地址栏里输入www.passjava.cn这样一个URL。实际上我们想要浏览的网页内容都存放在互联网中的某台服务器上,而浏览器的任务就是找到我们想要访问的这台服务器的IP地址,然后向它请求内容。从这一刻起,DNS就开始工作了。其工作流程如图所示。

  • 用户在浏览器地址栏中输入想要访问的网站URL;
  • 该浏览器从上述URL中抽取出主机名 passjava.cn,并将这个主机名传给本机DNS应用的客户端;
  • DNS客户端向本地DNS服务器发送一个包含主机名的请求;
  • DNS客户端会收到来自本地DNS服务器的应答报文,其中含有对应于该主机的IP地址;
  • 一旦该浏览器接收到来自DNS的IP地址,它就可以向由该IP地址定位的服务器发起一个TCP连接,请求相应的内容;

Nginx 配置

以下是 Nginx 的配置:

ini 复制代码
server {
    listen       80;
    server_name  www.passjava.cn;
​
    location / {
        root   /home/ubuntu/docs;
        index  index.html;
    }
}

我开始以为这是一个正向代理的配置,其实并不是,这个配置只是一个简单的虚拟主机配置,用于托管静态网站。这个配置定义了一个 Nginx 虚拟主机,用于处理来自 www.passjava.cn 域名的 HTTP 请求,并提供静态网页。

配置说明

解释下这些配置项含义:

  1. server { ... }:这是一个 server 块,用于定义一个虚拟主机。每个 server 块通常用于配置一个不同的虚拟主机,以处理特定域名或 IP 地址的请求。
  2. listen 80;:这一行指定了监听的端口号,这里是 80,表示该虚拟主机将处理来自客户端的 HTTP 请求,这是 HTTP 的标准端口号。
  3. server_name www.passjava.cn;:这一行定义了虚拟主机所处理的域名。在这个例子中,虚拟主机将处理来自 www.passjava.cn 域名的请求。当客户端发送请求到这个域名时,Nginx 将使用这个 server 块中的配置来响应请求。
  4. location / { ... }:这是一个 location 块,它定义了如何处理特定 URI(统一资源标识符)路径的请求。在这里,location / 匹配所有请求的根路径。
  5. root /home/ubuntu/docs;:这一行指定了 Nginx 服务器上要提供的文件的根目录。当客户端请求根路径时,Nginx 将在 /home/ubuntu/docs 目录中查找文件来提供给客户端。
  6. index index.html;:这一行指定了默认的索引文件,当客户端请求的路径是一个目录时,Nginx 将尝试提供 index.html 文件作为默认文档。如果 /home/ubuntu/docs 目录中存在 index.html 文件,它将作为默认文档提供给客户端。

注意:正向代理配置通常涉及将客户端的请求代理到其他服务器,而不是提供自己的网页内容。正向代理的配置会包括一些额外的代理设置,用于将请求转发到目标服务器,而不是提供本地静态文件。

相关推荐
三十而立洋5 小时前
深入理解 npm:从核心机制到常用命令全解析
前端·前端工程化
Canace5 小时前
最新版 Codex 工作流的问题
前端·人工智能·agent
变与不变8065 小时前
引用类型、内存原理与对象
开发语言·前端·javascript
jearry5 小时前
给 C++ 老程序补现代 UI:WebView2 多入口资源加载与虚拟主机名实践
前端
打呵欠的猫5 小时前
让 AI 帮你写 Git Commit Message:从"fix bug"到语义化提交只需一个 Hook
前端·ai编程
labixiong5 小时前
CSS 锚点定位实测:零 JS 实现气泡跟随,自动翻转很香但暗藏 3 个致命坑
前端·css
qibmz5 小时前
用 DeepSeek 给 GitHub 仓库加 PR 自动 Review
前端
计算机魔术师5 小时前
幻觉率从 4.2% 降到 2% 又退回,GPT-6 Astra 到底在藏什么
前端
梨想橙汁5 小时前
Git 常用命令大全:提交、查看日志、版本回退、文件撤销
前端·javascript
Amos_Web5 小时前
Rspack 源码解析(三):从入口到依赖图,读懂 Make 阶段的 Rust 任务循环
前端·rust