凌峰创科服务平台

Linux搭建Nginx服务器步骤有哪些?

本教程将以 Ubuntu 22.04 为例,因为它非常流行且命令相对简单,对于其他发行版(如 CentOS),主要包管理命令和配置文件路径会有所不同,但核心概念和步骤是相通的。

Linux搭建Nginx服务器步骤有哪些?-图1
(图片来源网络,侵删)

目录

  1. 准备工作
  2. 第一步:更新系统包
  3. 第二步:安装 Nginx
  4. 第三步:启动并设置 Nginx 开机自启
  5. 第四步:检查 Nginx 服务状态
  6. 第五步:调整防火墙(重要!)
  7. 第六步:验证 Nginx 是否运行
  8. 第七步:理解 Nginx 的核心配置文件
  9. 第八步:部署你的第一个网站(创建虚拟主机)
  10. 第九步:配置域名(可选)
  11. 第十步:常用 Nginx 命令
  12. 常见问题与解决方案

第一步:准备工作

在开始之前,你需要:

  • 一台已经安装好 Linux(如 Ubuntu)的服务器。
  • 一个具有 sudo 权限的非 root 用户,使用 root 用户操作有安全风险,所以最佳实践是使用 sudo

第二步:更新系统包

确保你的系统所有包都是最新的,打开终端,执行以下命令:

sudo apt update
sudo apt upgrade -y

第三步:安装 Nginx

使用 apt 包管理器来安装 Nginx。

sudo apt install nginx -y

安装过程会自动下载 Nginx 主程序及其依赖项。

Linux搭建Nginx服务器步骤有哪些?-图2
(图片来源网络,侵删)

第四步:启动并设置 Nginx 开机自启

安装完成后,Nginx 不会自动启动,你需要手动启动它,并设置它随系统开机而自动运行。

# 启动 Nginx 服务
sudo systemctl start nginx
# 设置 Nginx 开机自启
sudo systemctl enable nginx

第五步:检查 Nginx 服务状态

你可以使用 systemctl 命令来检查 Nginx 是否正在正常运行。

sudo systemctl status nginx

如果看到绿色的 active (running) 字样,说明 Nginx 已经成功启动并正在运行,按 q 键退出状态界面。

第六步:调整防火墙(重要!)

新安装的 Nginx 会开放两个端口:

Linux搭建Nginx服务器步骤有哪些?-图3
(图片来源网络,侵删)
  • 80 (HTTP): 用于普通的网页浏览。
  • 443 (HTTPS): 用于加密的网页浏览。

如果你的服务器开启了防火墙(如 ufw),你需要允许这些端口的流量通过。

检查防火墙状态

sudo ufw status

如果显示 Status: active,说明防火墙已开启。

允许 Nginx 流量 你可以允许所有 Nginx 的连接,这最简单。

sudo ufw allow 'Nginx Full'

'Nginx Full' 规则同时允许 HTTP (80) 和 HTTPS (443) 端口。

重新加载防火墙

sudo ufw reload

第七步:验证 Nginx 是否运行

这是最令人兴奋的一步!打开你的浏览器,输入你的服务器公网 IP 地址。

http://你的服务器公网IP地址

如果你能看到一个 "Welcome to nginx!" 的欢迎页面,恭喜你,你的 Nginx 服务器已经成功搭建并运行了!

如何找到你的服务器公网 IP? 在服务器终端中运行:

curl ifconfig.me
# 或者
curl icanhazip.com

第八步:理解 Nginx 的核心配置文件

为了更好地管理 Nginx,你需要了解它的文件结构。

  • 主配置文件: /etc/nginx/nginx.conf

    这里包含了全局的 Nginx 配置,如运行用户、工作进程数、日志路径等,通常不建议在这里修改网站相关的配置。

  • 网站配置目录: /etc/nginx/sites-available/

    • 存放所有网站的虚拟主机配置文件,每个网站(域名)都应该有一个独立的配置文件放在这里。
  • 启用的网站配置目录: /etc/nginx/sites-enabled/

    • 这个目录下的配置文件实际上是 sites-available 目录中文件的符号链接,Nginx 只会加载这个目录下的配置。
  • 服务器根目录: /var/www/html/

    • 这是 Nginx 默认存放网站文件的地方,当你访问默认网站时,它就会读取这个目录下的 index.html 文件。

第九步:部署你的第一个网站(创建虚拟主机)

我们将创建一个名为 example.com 的虚拟主机,并部署一个静态网站,请将 example.com 替换成你自己的域名。

创建网站根目录

# 创建一个以域名为名的目录
sudo mkdir -p /var/www/example.com/html
# 将目录的所有权赋予你的普通用户,避免使用 sudo 操作文件
sudo chown -R $USER:$USER /var/www/example.com/html

$USER 是一个环境变量,会自动替换为当前登录的用户名。

创建一个简单的首页文件

# 创建 index.html 文件
nano /var/www/example.com/html/index.html

粘贴到文件中并保存(在 nano 中按 Ctrl+O 保存,Ctrl+X 退出):

<!DOCTYPE html>
<html>
<head>Welcome to example.com!</title>
    <style>
        body { width: 60em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; }
    </style>
</head>
<body>
    <h1>Success! The example.com server block is working!</h1>
    <p>This is a simple HTML page served from Nginx.</p>
</body>
</html>

创建 Nginx 配置文件 为你的网站创建一个配置文件。

sudo nano /etc/nginx/sites-available/example.com

粘贴到文件中。请务必将 server_name 修改为你的域名或 IP 地址。

server {
        listen 80;
        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;
        }
}

配置解释:

  • listen 80;: 监听 80 端口。
  • server_name example.com;: 定义这个虚拟主机处理的域名。
  • root /var/www/example.com/html;: 指定网站文件的根目录。
  • location / { ... }: 定义当访问根路径 时的行为。

启用新的网站配置 创建符号链接,将 sites-available 中的配置文件链接到 sites-enabled 目录。

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

测试并重新加载 Nginx 在重新加载配置之前,务必先测试一下配置文件是否有语法错误。

sudo nginx -t

如果看到下面的输出,说明配置正确:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

如果配置无误,重新加载 Nginx 以应用新配置:

sudo systemctl reload nginx

测试新网站 在浏览器中访问你的域名:

http://example.com

你应该能看到你刚刚创建的 "Success!" 页面了!

第十步:配置域名(可选)

如果你使用的是真实的域名,你需要将域名的 DNS 记录指向你的服务器 IP 地址。

  1. 登录你的域名注册商的控制面板(如 GoDaddy, Namecheap 等)。
  2. 找到 DNS 管理(DNS Management)或解析设置(Zone Editor)。
  3. 添加一条 A 记录
    • Type: A
    • Name: (或者你的域名,如 example.com)
    • Value: 你的服务器公网 IP 地址
    • TTL: Automatic1h

等待 DNS 生效(通常需要几分钟到几小时),然后再次访问你的域名即可。

第十一节:常用 Nginx 命令

命令 功能
sudo systemctl start nginx 启动 Nginx 服务
sudo systemctl stop nginx 停止 Nginx 服务
sudo systemctl restart nginx 重启 Nginx 服务(用于应用配置更改)
sudo systemctl reload nginx 重新加载配置(不中断现有连接)
sudo systemctl status nginx 查看 Nginx 服务状态
sudo nginx -t 测试 Nginx 配置文件语法是否正确
sudo tail -f /var/log/nginx/access.log 实时查看网站的访问日志
sudo tail -f /var/log/nginx/error.log 实时查看 Nginx 的错误日志

第十二步:常见问题与解决方案

问题1:浏览器访问 IP 地址,显示 "Welcome to nginx!",但访问域名却显示 404 或无法访问。

  • 原因: 通常是防火墙规则没有正确设置,或者域名的 DNS 记录没有指向正确的 IP。
  • 解决:
    1. 检查防火墙:sudo ufw status,确保允许了 'Nginx Full'。
    2. 检查 DNS:使用 dig example.com 或在线 DNS 查询工具,确认 A 记录是否正确指向你的服务器 IP。
    3. 检查 Nginx 错误日志:sudo tail -f /var/log/nginx/error.log,查看是否有权限或配置错误。

问题2:访问域名时,看到 403 Forbidden 错误。

  • 原因: 通常是 Nginx 没有权限读取网站目录下的文件。
  • 解决:
    1. 检查网站目录的所有权:ls -l /var/www/,确保目录的所有者是运行 Nginx 的用户(通常是 www-data),如果不是,请用 sudo chown -R www-data:www-data /var/www/your-site 修正。
    2. 检查文件权限:ls -l /var/www/your-site/html/index.html,确保 Nginx 用户有读取和执行权限。644 (文件) 和 755 (目录) 是合适的权限。

问题3:修改配置文件后,sudo systemctl reload nginx 失败。

  • 原因: 配置文件有语法错误。
  • 解决:
    1. 运行 sudo nginx -t 来定位具体的错误信息。
    2. 根据错误提示,返回 /etc/nginx/sites-available/ 目录下的配置文件进行修改。
    3. 修复后,再次运行 sudo nginx -t,直到测试通过,再执行 sudo systemctl reload nginx

恭喜!你已经成功在 Linux 上搭建并配置了一个功能完整的 Nginx 服务器,你可以学习如何配置 SSL 证书(使用 Let's Encrypt)、配置反向代理、配置负载均衡等更高级的主题。

分享:
扫描分享到社交APP
上一篇
下一篇