Nginx 托管 /var/www/ 目录下的静态网站
本教程将详细介绍如何在 Ubuntu 服务器上,配置 Nginx 作为一个高性能的 Web 服务器,以安全、高效地向访问者提供您存放在 /var/www/ 目录下的网站文件。
前提条件
- 一台运行 Ubuntu 的服务器。
- 拥有
sudo权限的用户账户。 - 一个域名(例如
yourdomain.com),并且其 DNS A 记录已指向您服务器的 IP 地址。
第一步:安装 Nginx
如果您的服务器上还未安装 Nginx,请通过 apt 包管理器进行安装。
# 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,但最佳实践是为每个网站创建一个独立的目录。这使得管理多个网站变得更加清晰和安全。
- 为您的网站创建目录
我们将以您的域名命名该目录,这是一种常见的约定。请将 yourdomain.com 替换为您的真实域名。
sudo mkdir -p /var/www/yourdomain.com- 创建示例网页
为了方便测试,我们在新创建的目录中放置一个简单的 index.html 文件。
sudo nano /var/www/yourdomain.com/index.html在打开的 nano 编辑器中,粘贴以下 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)。
- 设置正确的权限
为了安全起见,Nginx 进程(通常以 www-data 用户运行)需要对网站文件有读取权限。我们将目录的所有权分配给 www-data 用户和组。
sudo chown -R www-data:www-data /var/www/yourdomain.com同时,确保目录具有正确的读取和执行权限,以便 Nginx 能够访问和提供文件。
sudo chmod -R 755 /var/www/yourdomain.com第三步:为您的网站配置 Nginx 服务器块
现在,我们需要告诉 Nginx 如何处理发往您域名的请求。这通过创建一个“服务器块”(Server Block)配置文件来完成。
- 创建新的配置文件
在 /etc/nginx/sites-available/ 目录下创建一个新的配置文件。同样,建议以您的域名命名。
sudo nano /etc/nginx/sites-available/yourdomain.com.conf- 添加服务器块配置
将以下配置粘贴到文件中。这是一个标准的静态网站服务配置。
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.html或index.htm文件。server_name yourdomain.com www.yourdomain.com;: 指定该配置块响应哪些域名。try_files $uri $uri/ =404;: 这是处理静态文件请求的优雅方式。它确保了对文件和目录的正确访问,并在找不到资源时返回标准的 404 Not Found 错误。
第四步:启用配置并重启 Nginx
- 启用新的服务器块
通过在 sites-enabled 目录中创建符号链接来启用您的配置。
sudo ln -s /etc/nginx/sites-available/yourdomain.com.conf /etc/nginx/sites-enabled/注意:为了避免冲突,您可能需要移除默认的配置链接(如果它还存在的话):sudo rm /etc/nginx/sites-enabled/default
- 测试配置语法
在重启前,务必检查配置是否有语法错误。
sudo nginx -t如果一切正常,您会看到 syntax is ok 和 test is successful 的消息。
- 重启 Nginx 应用更改
sudo systemctl restart nginx现在,在您的浏览器中访问 http://yourdomain.com,您应该能看到您刚刚创建的 “Success!” 页面。
第五步:使用 Let's Encrypt 配置 SSL (HTTPS)
为了网站安全和赢得用户信任,强烈建议启用 HTTPS。我们将使用 Certbot 自动完成这个过程。
- 安装 Certbot
sudo apt install certbot python3-certbot-nginx -y- 获取并安装 SSL 证书
运行 Certbot,并指定您的域名。Certbot 会自动读取您的 Nginx 配置。
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com按照屏幕上的提示操作:
- 输入邮箱地址。
- 同意服务条款。
- 选择将 HTTP 流量重定向到 HTTPS(推荐选项 2)。
Certbot 会自动获取证书,并修改您的 Nginx 配置文件(/etc/nginx/sites-available/yourdomain.com.conf)以启用 SSL。完成后,它会自动重新加载 Nginx。
- 验证 HTTPS
再次访问您的网站,这次使用 https://yourdomain.com。您应该会看到浏览器地址栏的安全锁标志,并且即使您输入 http://,也会被自动重定向到 https://。
总结
您已经成功地将 Nginx 配置为一个功能齐全的 Web 服务器,用于托管位于 /var/www/ 目录下的静态网站,并为其启用了行业标准的 HTTPS 加密。现在,您可以使用 FTP、SCP 或 Git 等工具将您真正的网站文件上传到 /var/www/yourdomain.com 目录,替换掉我们创建的 index.html 示例文件。
