我的网站是如何通过 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 请求,并提供静态网页。
配置说明
解释下这些配置项含义:
server { ... }
:这是一个 server 块,用于定义一个虚拟主机。每个 server 块通常用于配置一个不同的虚拟主机,以处理特定域名或 IP 地址的请求。listen 80;
:这一行指定了监听的端口号,这里是 80,表示该虚拟主机将处理来自客户端的 HTTP 请求,这是 HTTP 的标准端口号。server_name www.passjava.cn;
:这一行定义了虚拟主机所处理的域名。在这个例子中,虚拟主机将处理来自 www.passjava.cn 域名的请求。当客户端发送请求到这个域名时,Nginx 将使用这个 server 块中的配置来响应请求。location / { ... }
:这是一个 location 块,它定义了如何处理特定 URI(统一资源标识符)路径的请求。在这里,location /
匹配所有请求的根路径。root /home/ubuntu/docs;
:这一行指定了 Nginx 服务器上要提供的文件的根目录。当客户端请求根路径时,Nginx 将在/home/ubuntu/docs
目录中查找文件来提供给客户端。index index.html;
:这一行指定了默认的索引文件,当客户端请求的路径是一个目录时,Nginx 将尝试提供index.html
文件作为默认文档。如果/home/ubuntu/docs
目录中存在index.html
文件,它将作为默认文档提供给客户端。
注意:正向代理配置通常涉及将客户端的请求代理到其他服务器,而不是提供自己的网页内容。正向代理的配置会包括一些额外的代理设置,用于将请求转发到目标服务器,而不是提供本地静态文件。