Skip to content

Nginx 托管 /var/www/ 目录下的静态网站

本教程将详细介绍如何在 Ubuntu 服务器上,配置 Nginx 作为一个高性能的 Web 服务器,以安全、高效地向访问者提供您存放在 /var/www/ 目录下的网站文件。

前提条件

  • 一台运行 Ubuntu 的服务器。
  • 拥有 sudo 权限的用户账户。
  • 一个域名(例如 yourdomain.com),并且其 DNS A 记录已指向您服务器的 IP 地址。

第一步:安装 Nginx

如果您的服务器上还未安装 Nginx,请通过 apt 包管理器进行安装。

bash
# 1. 更新软件包列表
sudo apt update

# 2. 安装 Nginx
sudo apt install nginx -y

# 3. 允许 Nginx 通过防火墙 (如果 ufw 已启用)
sudo ufw allow 'Nginx Full'

安装完成后,Nginx 服务会自动启动。您可以通过 systemctl status nginx 命令来验证其运行状态。

第二步:创建并准备网站目录

虽然 Nginx 的默认网站根目录是 /var/www/html,但最佳实践是为每个网站创建一个独立的目录。这使得管理多个网站变得更加清晰和安全。

  1. 为您的网站创建目录

我们将以您的域名命名该目录,这是一种常见的约定。请将 yourdomain.com 替换为您的真实域名。

bash
sudo mkdir -p /var/www/yourdomain.com
  1. 创建示例网页

为了方便测试,我们在新创建的目录中放置一个简单的 index.html 文件。

bash
sudo nano /var/www/yourdomain.com/index.html

在打开的 nano 编辑器中,粘贴以下 HTML 内容:

html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Welcome to My Website!</title>
<style>
body { font-family: Arial, sans-serif; text-align: center; margin-top: 50px; }
h1 { color: #333; }
</style>
</head>
<body>
<h1>Success!</h1>
<p>The yourdomain.com Nginx server block is working correctly.</p>
</body>
</html>

保存文件并退出(按 Ctrl+X,然后按 Y,最后按 Enter)。

  1. 设置正确的权限

为了安全起见,Nginx 进程(通常以 www-data 用户运行)需要对网站文件有读取权限。我们将目录的所有权分配给 www-data 用户和组。

bash
sudo chown -R www-data:www-data /var/www/yourdomain.com

同时,确保目录具有正确的读取和执行权限,以便 Nginx 能够访问和提供文件。

bash
sudo chmod -R 755 /var/www/yourdomain.com

第三步:为您的网站配置 Nginx 服务器块

现在,我们需要告诉 Nginx 如何处理发往您域名的请求。这通过创建一个“服务器块”(Server Block)配置文件来完成。

  1. 创建新的配置文件

/etc/nginx/sites-available/ 目录下创建一个新的配置文件。同样,建议以您的域名命名。

bash
sudo nano /etc/nginx/sites-available/yourdomain.com.conf
  1. 添加服务器块配置

将以下配置粘贴到文件中。这是一个标准的静态网站服务配置。

nginx
server {
# 监听 80 端口 (HTTP) for both IPv4 and IPv6
listen 80;
listen [::]:80;

# 设置网站文件的根目录
root /var/www/yourdomain.com;

# 定义默认文件,当请求一个目录时,Nginx会依次查找这些文件
index index.html index.htm;

# 匹配此配置的域名,请替换为您自己的域名
server_name yourdomain.com www.yourdomain.com;

# 定义如何处理请求
location / {
# 尝试直接提供匹配的文件 ($uri)
# 如果找不到,尝试提供匹配的目录 ($uri/)
# 如果都找不到,则返回 404 错误
try_files $uri $uri/ =404;
}
}

配置指令详解:

  • root /var/www/yourdomain.com;: 核心指令。它告诉 Nginx,当处理此服务器块的请求时,应该去哪个目录查找文件。
  • index index.html index.htm;: 当用户访问 http://yourdomain.com/ 时,Nginx 会自动查找并提供 index.htmlindex.htm 文件。
  • server_name yourdomain.com www.yourdomain.com;: 指定该配置块响应哪些域名。
  • try_files $uri $uri/ =404;: 这是处理静态文件请求的优雅方式。它确保了对文件和目录的正确访问,并在找不到资源时返回标准的 404 Not Found 错误。

第四步:启用配置并重启 Nginx

  1. 启用新的服务器块

通过在 sites-enabled 目录中创建符号链接来启用您的配置。

bash
sudo ln -s /etc/nginx/sites-available/yourdomain.com.conf /etc/nginx/sites-enabled/

注意:为了避免冲突,您可能需要移除默认的配置链接(如果它还存在的话):sudo rm /etc/nginx/sites-enabled/default

  1. 测试配置语法

在重启前,务必检查配置是否有语法错误。

bash
sudo nginx -t

如果一切正常,您会看到 syntax is oktest is successful 的消息。

  1. 重启 Nginx 应用更改
bash
sudo systemctl restart nginx

现在,在您的浏览器中访问 http://yourdomain.com,您应该能看到您刚刚创建的 “Success!” 页面。

第五步:使用 Let's Encrypt 配置 SSL (HTTPS)

为了网站安全和赢得用户信任,强烈建议启用 HTTPS。我们将使用 Certbot 自动完成这个过程。

  1. 安装 Certbot
bash
sudo apt install certbot python3-certbot-nginx -y
  1. 获取并安装 SSL 证书

运行 Certbot,并指定您的域名。Certbot 会自动读取您的 Nginx 配置。

bash
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

按照屏幕上的提示操作:

  • 输入邮箱地址。
  • 同意服务条款。
  • 选择将 HTTP 流量重定向到 HTTPS(推荐选项 2)。

Certbot 会自动获取证书,并修改您的 Nginx 配置文件(/etc/nginx/sites-available/yourdomain.com.conf)以启用 SSL。完成后,它会自动重新加载 Nginx。

  1. 验证 HTTPS

再次访问您的网站,这次使用 https://yourdomain.com。您应该会看到浏览器地址栏的安全锁标志,并且即使您输入 http://,也会被自动重定向到 https://

总结

您已经成功地将 Nginx 配置为一个功能齐全的 Web 服务器,用于托管位于 /var/www/ 目录下的静态网站,并为其启用了行业标准的 HTTPS 加密。现在,您可以使用 FTP、SCP 或 Git 等工具将您真正的网站文件上传到 /var/www/yourdomain.com 目录,替换掉我们创建的 index.html 示例文件。