我的网站是如何通过 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 文件,它将作为默认文档提供给客户端。

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

相关推荐
777VG17 小时前
PostgreSQL +martin将多张表输出成一个 MVT
前端·数据库·postgresql
mayaairi18 小时前
JS循环语句深度解析:嵌套for、while与do...while
开发语言·前端·javascript
To_OC18 小时前
啃完流式输出:从一个卡顿的 LLM 接口开始,我搞懂了数据流到底怎么 “流”
前端·javascript·llm
阳光是sunny18 小时前
LangGraph实战教程:defer延迟节点——让收尾工作自动排到最后
前端·人工智能·后端
kyriewen18 小时前
我用了三周Claude Code Skills——总结出5条铁律,第3条最反直觉
前端·ai编程·claude
阳光是sunny18 小时前
LangGraph实战教程:控制流详解
前端·人工智能·后端
格尔曼Noah19 小时前
Safari浏览器中如何只允许指定网站下载
前端·safari
用户0595401744620 小时前
用了3年Redis,才发现我一直没搞懂缓存一致性测试
前端·css
swipe20 小时前
07|(前端转后全栈)为什么后端也要缓存?从前端缓存思维理解 Redis
前端·后端·全栈
IT小盘20 小时前
05-企业项目统一接入多个大模型-适配器模式实战
前端·人工智能·适配器模式