Nginx 是一款非常流行的轻量级 Web 服务器,以高效、稳定、可扩展性强而闻名。本文将通过实际步骤,详细讲解如何在 Linux 系统中安装、配置和运行 Nginx。我们以常用的 Ubuntu 和 CentOS 为例进行操作。
一、环境准备
- 系统要求:可以选择 Ubuntu 或 CentOS 操作系统(或其他 Linux 发行版)
- 网络要求:需要连接互联网以获取必要的安装包
- 权限要求:需要具有
root
或使用 sudo
权限的用户
二、在Ubuntu中安装Nginx
1. 更新软件包管理器
在安装 Nginx 之前,建议先更新软件包管理器以确保获取到最新的软件包版本。
sudo apt update
2. 安装Nginx
通过 apt
包管理器直接安装 Nginx:
sudo apt install nginx
3. 启动Nginx服务
安装完成后,启动 Nginx 服务:
sudo systemctl start nginx
4. 设置Nginx开机自启动
确保 Nginx 服务在系统启动时自动启动:
sudo systemctl enable nginx
5. 验证Nginx是否安装成功
通过浏览器访问服务器的 IP 地址,或者在本地机器上输入 http://localhost
,如果看到如下的 Nginx 欢迎页面,则表示 Nginx 已成功安装:
Welcome to nginx!
三、在CentOS中安装Nginx
1. 安装EPEL源
CentOS 默认的 Yum 源中没有 Nginx,所以需要先安装 EPEL 源:
sudo yum install epel-release
2. 安装Nginx
使用 yum
命令安装 Nginx:
sudo yum install nginx
3. 启动Nginx
sudo systemctl start nginx
4. 设置Nginx开机自启动
sudo systemctl enable nginx
5. 验证Nginx安装
和 Ubuntu 一样,访问 http://localhost
或者服务器的 IP 地址,检查是否能看到 Nginx 欢迎页面。
四、Nginx的基础配置
Nginx 的默认配置文件位于 /etc/nginx/nginx.conf
,其中包括全局设置、事件设置和 HTTP 服务的配置。我们可以通过修改这个文件来定制 Nginx 的行为。
1. 打开并编辑Nginx配置文件
可以使用任何文本编辑器编辑 Nginx 的配置文件。以 vim
为例:
sudo vim /etc/nginx/nginx.conf
2. 配置文件结构概述
Nginx 配置文件分为以下几个主要部分:
- 全局块:全局设置,如用户权限、进程数等。
- 事件块:定义 Nginx 如何处理连接数和工作进程。
- HTTP块:处理 HTTP 请求的设置,包括虚拟主机、反向代理等。
默认的 nginx.conf
文件内容可能类似于以下内容:
user www-data;
worker_processes auto;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /var/www/html;
index index.html index.htm;
}
}
}
3. 配置虚拟主机
虚拟主机(Virtual Host)允许一台服务器服务多个网站或应用。我们可以通过在 server
块中指定 server_name
和 root
目录来实现这一点。
示例1:配置一个简单的虚拟主机
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
- server_name:指定域名(多个域名用空格分开)。
- root:指定该虚拟主机的根目录。
- location:配置请求路径的处理规则。
4. 配置反向代理
Nginx 的反向代理功能非常强大。可以将用户请求代理到后端的应用服务器(如 Node.js、Flask 等)。
示例2:配置反向代理
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
- proxy_pass:指定后端应用的地址。
- proxy_set_header:转发客户端的真实 IP 等信息给后端应用。
5. 配置负载均衡
Nginx 支持多种负载均衡方式,可以将请求分发到多个后端服务器上。
示例3:配置轮询负载均衡
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
server_name loadbalancer.example.com;
location / {
proxy_pass http://backend;
}
}
}
- upstream:定义一组后端服务器。
- proxy_pass:代理请求到
upstream
定义的服务器组。
6. 配置SSL/HTTPS
通过配置 SSL/TLS 证书,可以为网站提供 HTTPS 加密服务。
示例4:配置SSL
server {
listen 443 ssl;
server_name secure.example.com;
ssl_certificate /etc/nginx/ssl/example.crt;
ssl_certificate_key /etc/nginx/ssl/example.key;
location / {
root /var/www/secure;
index index.html;
}
}
五、管理Nginx服务
在配置文件修改后,通常需要重载或重启 Nginx 服务来应用更改。以下是常用的服务管理命令:
1. 重启Nginx
sudo systemctl restart nginx
2. 重载Nginx配置
当只修改了配置文件时,可以通过重载来避免中断现有连接:
sudo systemctl reload nginx
3. 查看Nginx状态
sudo systemctl status nginx
4. 停止Nginx服务
sudo systemctl stop nginx
六、检查与排错
1. 检查Nginx配置语法
在重载配置之前,最好先检查配置文件的语法是否正确:
sudo nginx -t
2. 查看Nginx日志
Nginx 会记录访问日志和错误日志,日志文件通常位于 /var/log/nginx
目录中:
- 访问日志:
/var/log/nginx/access.log
- 错误日志:
/var/log/nginx/error.log
可以通过 tail
命令实时查看日志输出:
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log