Ubuntu系统搭建Nginx虚拟主机详细步骤
首先更新系统软件包列表,确保获取最新版本信息,然后通过APT包管理器安装Nginx:
sudo apt update
sudo apt install nginx -y
安装完成后,Nginx会自动启动。可通过以下命令验证服务状态:
sudo systemctl status nginx
若显示“active (running)”,则表示安装成功。
若系统启用了UFW(Uncomplicated Firewall),需允许HTTP(80端口)和HTTPS(443端口)流量,确保外部能访问网站:
sudo ufw allow 'Nginx Full'
验证防火墙规则是否生效:
sudo ufw status
输出中应包含“Nginx Full”相关的允许规则。
为虚拟主机创建专用的网站根目录,用于存放HTML、CSS等网站文件。建议将目录放在/var/www/下,并以域名命名(如example.com):
sudo mkdir -p /var/www/example.com/html
设置目录所有者为www-data(Nginx默认运行用户),并赋予755权限,确保Nginx进程可读写:
sudo chown -R www-data:www-data /var/www/example.com
sudo chmod -R 755 /var/www
Nginx的虚拟主机配置文件存放在/etc/nginx/sites-available/目录下,需在此创建对应域名的配置文件(如example.com.conf):
sudo nano /etc/nginx/sites-available/example.com.conf
编辑配置文件,添加以下基础内容(按需修改server_name和root路径):
server {
listen 80;
server_name example.com www.example.com; # 替换为你的域名
root /var/www/example.com/html; # 网站根目录
index index.html index.htm; # 默认首页文件
location / {
try_files $uri $uri/ =404; # 尝试匹配请求文件,未找到则返回404
}
# 可选:自定义错误页面
error_page 404 /404.html;
location = /404.html {
root /var/www/example.com/html;
}
}
保存并退出编辑器(Ctrl+O保存,Ctrl+X退出)。
通过创建符号链接,将sites-available目录下的配置文件链接到sites-enabled目录(Nginx启动时会加载该目录下的所有配置):
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
注意:若之前有测试用的配置文件,建议删除或禁用(如sudo rm /etc/nginx/sites-enabled/default),避免冲突。
在重新加载Nginx前,必须测试配置文件语法是否正确,避免因配置错误导致服务中断:
sudo nginx -t
若输出“configuration file /etc/nginx/nginx.conf test is successful”,则表示配置无误。接着重载Nginx以应用更改:
sudo systemctl reload nginx
在网站根目录下创建index.html文件,用于验证虚拟主机是否正常工作:
sudo nano /var/www/example.com/html/index.html
添加简单的HTML内容(如“Welcome to Example.com”),保存后退出:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Example.com</title>
</head>
<body>
<h1>Hello, World!</h1>
<p>This is a test page for Nginx virtual host.</p>
</body>
</html>
若要通过域名访问网站,需将域名解析到服务器的公网IP地址。登录域名注册商的管理面板,添加一条A记录:
@(代表根域名)或www(代表www.example.com)A123.45.67.89)打开浏览器,输入域名(如http://example.com),若看到测试页面,则表示虚拟主机搭建成功。也可通过curl命令在终端验证:
curl -v http://example.com
若输出中包含“Welcome to Example.com”,则说明配置正确。
若需为网站启用HTTPS(推荐),可使用Let’s Encrypt提供的免费SSL证书。首先安装Certbot工具:
sudo apt install certbot python3-certbot-nginx -y
然后运行Certbot命令,自动获取并配置证书:
sudo certbot --nginx -d example.com -d www.example.com
按照提示完成配置(如选择“Redirect to HTTPS”以强制加密访问),Certbot会自动修改Nginx配置文件并重载服务。验证HTTPS访问:
curl -v https://example.com
若输出中包含“SSL certificate verify ok”,则表示HTTPS配置成功。