下面我将为你详细介绍如何使用这两种工具搭建 HTTP 服务器,并提供一个简单的测试方法。

使用 Apache (最经典、最通用)
Apache 是最古老的 Web 服务器之一,至今仍然拥有最高的市场份额,它模块化、功能强大,兼容性极好,非常适合新手和需要复杂配置的场景。
安装 Apache
打开终端,更新软件包列表,然后安装 apache2。
# 更新软件包列表 sudo apt update # 安装 Apache2 sudo apt install apache2
安装过程中,系统会自动启动 Apache 服务。
检查服务状态和防火墙
确保 Apache 服务正在运行。

# 检查 Apache 服务状态 sudo systemctl status apache2
如果看到绿色的 active (running) 字样,说明服务已成功启动。
如果你启用了 UFW (Uncomplicated Firewall) 防火墙,需要允许 HTTP (端口 80) 和 HTTPS (端口 443) 流量通过。
# 允许 Apache 流量 sudo ufw allow 'Apache Full' # 或者分别允许 HTTP 和 HTTPS # sudo ufw allow 80/tcp # sudo ufw allow 443/tcp # 检查防火墙状态 sudo ufw status
测试 Apache
你可以通过浏览器访问你的服务器 IP 地址或域名来测试。
获取你服务器的公网 IP 地址:

curl http://icanhazip.com
然后在浏览器中访问 http://<你的服务器IP地址>,http://203.0.113.10。
如果一切正常,你将看到 Apache 的默认欢迎页面,上面写着 "It works!"。
部署你的网站文件
Apache 的默认网站根目录是 /var/www/html,你可以将你的网站文件(如 index.html, images 文件夹等)放置到这个目录下。
注意: 直接替换 /var/www/html 下的文件可能会导致权限问题,一个更好的做法是创建一个子目录。
示例:
假设你有一个名为 my-website 的网站文件夹。
-
创建网站目录:
sudo mkdir -p /var/www/my-website
-
将你的网站文件复制进去: 假设你的网站文件在当前目录的
my-website文件夹里。# 使用 -r 选项递归复制目录 sudo cp -r my-website/* /var/www/my-website/
-
设置正确的文件权限: 为了让 Web 服务器(用户
www-data)可以读取文件,需要修改所有者和权限。# 将 /var/www/my-website 目录的所有者设置为 www-data 用户和组 sudo chown -R www-data:www-data /var/www/my-website # 设置目录和文件的权限,所有者有读写权限,其他用户有读和执行权限 sudo chmod -R 755 /var/www/my-website
-
访问你的网站: 在浏览器中访问
http://<你的服务器IP地址>/my-website,你就能看到你的网站了。
配置虚拟主机 (推荐)
如果你想为不同的域名或项目配置不同的网站,就需要使用虚拟主机,这比在根目录下创建子目录更清晰。
示例:为 example.com 配置虚拟主机
-
创建虚拟主机配置文件: Apache 的站点配置文件存放在
/etc/apache2/sites-available/目录下,我们可以复制一个默认配置作为模板。sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
-
编辑配置文件: 使用
nano或vim编辑器打开新文件。sudo nano /etc/apache2/sites-available/example.com.conf
修改文件内容如下:
<VirtualHost *:80> # ServerAdmin 管理员邮箱 ServerAdmin admin@example.com # ServerName 你的域名 ServerName example.com # ServerAlias 域名的其他形式,www ServerAlias www.example.com # 网站根目录 DocumentRoot /var/www/my-website # 错误日志文件 ErrorLog ${APACHE_LOG_DIR}/error.log # 访问日志文件 CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>保存并退出 (在
nano中按Ctrl+X,然后按Y,再按Enter)。 -
启用站点: 使用
a2ensite命令来启用这个新的虚拟主机配置。sudo a2ensite example.com.conf
-
禁用默认站点 (可选): 如果你想让
example.com成为默认首页,可以禁用默认的000-default.conf。sudo a2dissite 000-default.conf
-
重载 Apache 配置: 让所有更改生效。
sudo systemctl reload apache2
-
配置 DNS: 在你的域名注册商处,将
example.com和www.example.com的 A 记录指向你的服务器 IP 地址。 -
访问: 等待 DNS 生效后,通过浏览器访问
http://example.com即可看到你的网站。
使用 Nginx (高性能、低资源)
Nginx (发音 "engine-x") 是一个较新的 Web 服务器,以其高性能、高并发和低内存消耗而闻名,它非常适合处理静态文件,也常作为反向代理。
安装 Nginx
同样,打开终端,更新列表并安装 nginx。
# 更新软件包列表 sudo apt update # 安装 Nginx sudo apt install nginx
安装完成后,Nginx 会自动启动。
检查服务状态和防火墙
# 检查 Nginx 服务状态 sudo systemctl status nginx
确保看到 active (running)。
如果使用 UFW 防火墙,需要允许 Nginx 流量,Nginx 的配置更细致,可以只允许 HTTP 或 HTTP+HTTPS。
# 允许 Nginx Full (HTTP + HTTPS) sudo ufw allow 'Nginx Full' # 或者只允许 HTTP (端口 80) # sudo ufw allow 'Nginx HTTP' # 检查防火墙状态 sudo ufw status
测试 Nginx
在浏览器中访问你的服务器 IP 地址。
http://<你的服务器IP地址>
你会看到 Nginx 的默认欢迎页面,上面写着 "Welcome to nginx!"。
部署你的网站文件
Nginx 的默认网站根目录是 /var/www/html,过程与 Apache 类似。
-
创建网站目录:
sudo mkdir -p /var/www/my-website
-
复制你的网站文件:
sudo cp -r my-website/* /var/www/my-website/
-
设置权限: Nginx 默认使用
www-data用户。sudo chown -R www-data:www-data /var/www/my-website sudo chmod -R 755 /var/www/my-website
-
访问你的网站: 浏览器访问
http://<你的服务器IP地址>/my-website。
配置服务器块 (Nginx 的虚拟主机)
Nginx 的虚拟主机称为 "Server Blocks"。
示例:为 example.com 配置服务器块
-
创建配置文件: Nginx 的站点配置在
/etc/nginx/sites-available/目录下,复制默认配置作为模板。sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com
-
编辑配置文件:
sudo nano /etc/nginx/sites-available/example.com
修改
server块内的内容:server { listen 80; listen [::]:80; server_name example.com www.example.com; root /var/www/my-website; index index.html index.htm; location / { try_files $uri $uri/ =404; } }listen: 监听的端口。server_name: 你的域名。root: 网站根目录。index: 默认首页文件名。
-
启用站点: 创建一个指向
sites-enabled目录的符号链接。sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
-
测试并重载配置: 在重载之前,先测试配置文件是否有语法错误。
# 测试配置 sudo nginx -t # 如果输出 "syntax is ok" 和 "test is successful",则重载 sudo systemctl reload nginx
-
配置 DNS: 同样,在域名注册商处将域名指向你的服务器 IP。
-
访问: 通过浏览器访问
http://example.com。
总结与对比
| 特性 | Apache | Nginx |
|---|---|---|
| 工作模式 | 进程驱动,一个连接一个进程 | 事件驱动,异步、非阻塞 |
| 性能 | 资源消耗相对较高,并发能力一般 | 高性能,高并发,低内存消耗 |
| 配置 | .htaccess 文件,配置分散 |
集中式配置文件,更清晰 |
| 功能 | 模块化,功能非常全面,尤其擅长动态内容 | 静态文件处理极快,常作为反向代理、负载均衡器 |
| 适用场景 | 传统网站、需要 .htaccess 的环境、复杂的 URL 重写规则 |
高流量网站、静态资源网站、API 服务、反向代理 |
如何选择?
- 新手入门:两者都可以,Apache 的文档和社区支持更成熟,遇到问题更容易找到答案。
- 追求性能:如果你的网站流量较大,主要提供静态文件(如图片、CSS、JS),或者需要处理大量并发连接,Nginx 是更好的选择。
- 现代架构:很多现代应用会选择 Nginx + (uWSGI/Gunicorn + Python/Django) 或 Nginx + (PHP-FPM + PHP) 的组合,让 Nginx 处理静态请求和反向代理,让应用服务器处理动态请求。
希望这份详细的指南能帮助你成功在 Ubuntu 上搭建 HTTP 服务器!
