Nginx 入门使用
Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。因其高并发处理能力、轻量级、模块化设计而广受开发者喜爱。本指南将帮助开发人员快速入门并掌握基本使用方法。
什么是 Nginx
Nginx 的名称源于“engine x”,它的主要功能包括:
- 作为 HTTP 服务器:提供静态文件服务、HTTP 负载均衡和反向代理功能。
- 作为反向代理服务器:将客户端请求转发到后端服务器。
- 作为邮件代理服务器:支持 IMAP、POP3 和 SMTP 协议。
Nginx 的特点:
- 高性能:基于事件驱动的异步架构,支持大规模并发。
- 低内存消耗:运行效率高,占用系统资源少。
- 模块化设计:易于扩展功能。
安装 Nginx
在开始使用 Nginx 前,需要先安装它。以下是针对不同平台的安装方法。
在 Linux 上安装
使用包管理工具
# 在 Debian/Ubuntu 上
sudo apt update
sudo apt install nginx
# 在 CentOS/RHEL 上
sudo yum install epel-release
sudo yum install nginx
编译安装
如果需要自定义 Nginx,可以从源码编译:
wget http://nginx.org/download/nginx-<version>.tar.gz
tar -zxvf nginx-<version>.tar.gz
cd nginx-<version>
./configure
make
sudo make install
在 macOS 上安装
使用 Homebrew:
brew install nginx
在 Windows 上安装
Windows 上支持运行 Nginx,但主要用于开发测试。
- 下载 Nginx:官方下载页面。
- 解压到指定目录。
- 通过命令行运行:
cd <nginx_path>
start nginx
Nginx 配置文件结构
Nginx 的配置文件通常位于 /etc/nginx/nginx.conf
,其基本结构如下:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
配置文件主要分为以下几个部分:
- 全局配置:如
user
、worker_processes
等。 - 事件块:配置网络连接相关参数,如
worker_connections
。 - HTTP 块:配置 HTTP 服务,包括虚拟主机、日志、MIME 类型等。
常见使用场景
1. 静态文件服务器
Nginx 能快速、高效地服务于静态文件。
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
}
将上述配置添加到 /etc/nginx/conf.d/example.conf
中并重启 Nginx:
sudo systemctl restart nginx
2. 反向代理
反向代理是 Nginx 的核心功能之一。
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
此配置将所有请求代理到本地的 8080 端口。
3. 负载均衡
Nginx 支持多种负载均衡策略。
基本轮询
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
权重策略
upstream backend {
server backend1.example.com weight=3;
server backend2.example.com weight=1;
}
IP 哈希
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
}
4. HTTPS 配置
为站点启用 HTTPS:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
location / {
root /var/www/html;
index index.html;
}
}
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
5. 缓存配置
通过 Nginx 实现简单的缓存加速:
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";
server {
listen 80;
server_name example.com;
location / {
proxy_cache my_cache;
proxy_pass http://127.0.0.1:8080;
}
}
常用命令
启动和停止 Nginx
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
测试配置文件
sudo nginx -t
平滑重启
sudo nginx -s reload
Nginx 调试与排错
查看错误日志
错误日志文件通常位于 /var/log/nginx/error.log
。
检查端口占用
sudo netstat -tuln | grep 80
使用 Curl 测试
curl -I http://example.com
结语
Nginx 是一款功能强大且灵活的服务器软件,从简单的静态文件服务到复杂的反向代理和负载均衡配置,都能轻松实现。希望本指南能帮助开发者快速上手并熟练使用 Nginx。