在 Ubuntu 中轻松安装 Nginx – wiki基地

在 Ubuntu 中轻松安装 Nginx:一份详尽指南

Nginx (engine x) 是一款高性能的开源反向代理服务器、负载均衡器、HTTP缓存和Web服务器。它以其卓越的性能、稳定性以及丰富的功能而闻名,被广泛应用于各种规模的网站和应用程序中。在 Ubuntu 中安装 Nginx 相对简单,本文将为您提供一份详尽的指南,帮助您轻松完成安装和配置,并深入了解相关概念和最佳实践。

1. 准备工作

在开始安装 Nginx 之前,我们需要确保系统已经具备必要的条件:

  • 拥有一个运行 Ubuntu 的服务器或虚拟机: 本指南适用于 Ubuntu 的各种版本,例如 Ubuntu 20.04 LTS, 22.04 LTS 或更高版本。
  • 具备 sudo 权限的用户账户: 这是安装软件和修改系统配置所必需的。
  • 连接到互联网: 用于下载 Nginx 包。
  • 保持系统更新: 确保您的系统已经安装了最新的安全补丁和软件更新。

2. 更新软件包索引

首先,我们需要更新 Ubuntu 的软件包索引,以确保我们获取的是最新的软件包信息。打开终端,输入以下命令并按下 Enter 键:

bash
sudo apt update

这个命令会连接到 Ubuntu 的软件仓库,并下载最新的软件包列表。执行完毕后,可以开始安装 Nginx。

3. 安装 Nginx

使用 apt 包管理器安装 Nginx,这是 Ubuntu 官方推荐的方式。在终端中输入以下命令并按下 Enter 键:

bash
sudo apt install nginx

系统会提示您确认安装,输入 y 并按下 Enter 键继续。 apt 将自动下载并安装 Nginx 及其依赖项。

4. 验证 Nginx 安装

安装完成后,我们可以验证 Nginx 是否成功安装并正在运行。有几种方法可以做到这一点:

  • 检查 Nginx 服务状态: 使用 systemctl 命令可以查看 Nginx 服务的状态。

bash
sudo systemctl status nginx

如果 Nginx 正在运行,您应该看到类似以下的信息:

“`
● nginx.service – A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2023-10-26 10:00:00 UTC; 10s ago
Docs: man:nginx(8)
Main PID: 12345 (nginx)
Tasks: 2 (limit: 1111)
Memory: 2.1M
CPU: 10ms
CGroup: /system.slice/nginx.service
├─12345 nginx: master process /usr/sbin/nginx -g daemon off;
└─12346 nginx: worker process

Oct 26 10:00:00 ubuntu systemd[1]: Started A high performance web server and a reverse proxy server.
“`

Active: active (running) 表明 Nginx 正在正常运行。

  • 通过 Web 浏览器访问服务器的 IP 地址: 在 Web 浏览器中输入服务器的 IP 地址。如果您不知道服务器的 IP 地址,可以使用以下命令获取:

bash
ip addr show eth0 | grep inet | awk '{print $2}' | sed 's/\/.*//'

eth0 替换为您的网络接口名称。 通常情况下,它是 eth0ens33

如果 Nginx 安装成功,您应该看到 Nginx 的默认欢迎页面,上面写着 “Welcome to nginx!”。

5. 管理 Nginx 服务

systemctl 命令用于管理 Nginx 服务,以下是一些常用的命令:

  • 启动 Nginx 服务:

bash
sudo systemctl start nginx

  • 停止 Nginx 服务:

bash
sudo systemctl stop nginx

  • 重启 Nginx 服务:

bash
sudo systemctl restart nginx

重启服务通常用于应用配置更改。

  • 重新加载 Nginx 服务:

bash
sudo systemctl reload nginx

重新加载服务也能应用配置更改,但不会中断现有的连接。

  • 设置 Nginx 开机启动:

bash
sudo systemctl enable nginx

  • 禁用 Nginx 开机启动:

bash
sudo systemctl disable nginx

6. Nginx 配置文件的结构

Nginx 的配置文件主要位于 /etc/nginx/ 目录下。最重要的配置文件是 nginx.conf,它包含了全局配置和引入其他配置文件的指令。

以下是 nginx.conf 的典型结构:

“`
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
worker_connections 768;
# multi_accept on;
}

http {

##
# Basic Settings
##

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;

# server_names_hash_bucket_size 64;
# server_name_in_redirect off;

include /etc/nginx/mime.types;
default_type application/octet-stream;

##
# SSL Settings
##

ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;

##
# Logging Settings
##

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

##
# Gzip Settings
##

gzip on;

# gzip_vary on;
# gzip_disable "msie6";

# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

##
# Virtual Host Configs
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

}
“`

  • user 指定运行 Nginx 进程的用户。 默认是 www-data
  • worker_processes 指定 Nginx 工作进程的数量。auto 表示 Nginx 会自动检测 CPU 核心数量并设置相应数量的进程。
  • pid 指定 Nginx 进程 ID 文件的路径。
  • events 配置事件处理机制,例如 worker_connections 指定每个工作进程可以处理的最大连接数。
  • http 包含了 HTTP 服务器的配置,包括虚拟主机、日志、Gzip 压缩等。
  • include /etc/nginx/mime.types 包含 MIME 类型定义文件,用于指定不同文件类型的 Content-Type。
  • include /etc/nginx/conf.d/*.conf 包含 /etc/nginx/conf.d/ 目录下所有 .conf 文件的配置。这些文件通常用于配置全局设置或特定模块的配置。
  • include /etc/nginx/sites-enabled/* 包含 /etc/nginx/sites-enabled/ 目录下所有文件的配置。这些文件用于定义虚拟主机。

7. 虚拟主机配置

虚拟主机允许您在同一台服务器上托管多个网站。 Nginx 使用 server 块来定义虚拟主机。

  • /etc/nginx/sites-available/ 这个目录包含了可用的虚拟主机配置文件。
  • /etc/nginx/sites-enabled/ 这个目录包含了已经启用的虚拟主机配置文件。 Nginx 会读取这个目录下的所有文件。

要启用一个虚拟主机,你需要创建一个配置文件在 /etc/nginx/sites-available/ 目录下,然后创建一个符号链接到 /etc/nginx/sites-enabled/ 目录下。

示例:创建一个虚拟主机

假设我们要创建一个名为 example.com 的虚拟主机。

  1. 创建配置文件:/etc/nginx/sites-available/ 目录下创建一个名为 example.com 的文件。

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

  1. 添加配置内容:example.com 文件中添加以下内容:

“`nginx
server {
listen 80;
listen [::]:80;

server_name example.com www.example.com;

root /var/www/example.com;
index index.html index.htm index.nginx-debian.html;

location / {
    try_files $uri $uri/ =404;
}

}
“`

  • listen 80; listen [::]:80; 指定 Nginx 监听的端口。 80 是 HTTP 的默认端口。 [::]:80 表示同时监听 IPv6 地址。
  • server_name example.com www.example.com; 指定虚拟主机的域名。
  • root /var/www/example.com; 指定网站的根目录。
  • index index.html index.htm index.nginx-debian.html; 指定默认的索引文件。
  • location / { ... } 定义根路径 / 的处理方式。 try_files 指令会尝试查找与请求 URI 相匹配的文件或目录。 如果找不到,则返回 404 错误。

  • 创建网站根目录: 创建 /var/www/example.com 目录。

bash
sudo mkdir -p /var/www/example.com

  1. 创建索引文件:/var/www/example.com 目录下创建一个 index.html 文件。

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

添加一些简单的 HTML 内容:

“`html




Welcome to example.com

Hello from example.com!


“`

  1. 设置文件权限: 确保 www-data 用户拥有对 /var/www/example.com 目录的读取和执行权限。

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

  1. 创建符号链接:/etc/nginx/sites-enabled/ 目录下创建一个指向 /etc/nginx/sites-available/example.com 的符号链接。

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

  1. 取消默认虚拟主机配置: 默认的 Nginx 虚拟主机配置可能会与您的配置冲突。 您可以删除或禁用它。

bash
sudo rm /etc/nginx/sites-enabled/default

或者禁用它:

bash
sudo mv /etc/nginx/sites-enabled/default /etc/nginx/sites-available/default.backup

  1. 检查 Nginx 配置: 检查 Nginx 配置文件是否存在语法错误。

bash
sudo nginx -t

如果输出显示 syntax is oktest is successful,则表示配置正确。

  1. 重启 Nginx 服务: 重启 Nginx 服务以应用新的配置。

bash
sudo systemctl restart nginx

现在,您应该可以通过 Web 浏览器访问 example.com 来查看您的网站。 请确保您的 DNS 配置将 example.com 指向您的服务器 IP 地址。

8. 常見问题和故障排除

  • Nginx 无法启动: 检查 Nginx 的错误日志文件 /var/log/nginx/error.log 以获取更多信息。 可能是配置错误或端口冲突。
  • 无法访问网站: 检查防火墙设置,确保端口 80 (HTTP) 和 443 (HTTPS) 已打开。 检查 DNS 配置是否正确。
  • 配置更改未生效: 确保您已重启或重新加载 Nginx 服务。

9. Nginx 的高级用法

Nginx 具有强大的功能,可以用于各种用途:

  • 反向代理: 将客户端请求转发到后端服务器,隐藏后端服务器的真实 IP 地址,并提供负载均衡和缓存功能。
  • 负载均衡: 将请求分发到多个后端服务器,提高网站的可用性和性能。
  • HTTP 缓存: 缓存静态内容,减少后端服务器的负载,加快网站的访问速度。
  • SSL/TLS 加密: 使用 HTTPS 协议对网站进行加密,保护用户数据的安全。
  • WebSocket 代理: 代理 WebSocket 连接,实现实时双向通信。
  • 媒体服务器: 提供流媒体服务,例如视频和音频播放。

10. 总结

本文详细介绍了在 Ubuntu 中安装和配置 Nginx 的步骤,包括更新软件包索引、安装 Nginx、验证安装、管理服务、配置虚拟主机以及故障排除。 掌握这些知识,您可以轻松地搭建和维护基于 Nginx 的 Web 服务器,并利用 Nginx 的强大功能来提升网站的性能和安全性。 希望这份指南能帮助您成功部署 Nginx,并为您的 Web 应用提供可靠的基础设施。 祝您使用愉快!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部