目录
Nginx(发音为"engine x")是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。它具有轻量级、高并发性能、内存占用低等特点,常用于构建高性能的 Web 服务器、负载均衡器、反向代理、缓存服务等。下面详细介绍 Nginx 的安装、配置和使用:
1. 安装 Nginx
1.1 在 Ubuntu 上安装
sudo apt update
sudo apt install nginx
1.2 在 CentOS 上安装
sudo yum install epel-release
sudo yum install nginx
2. 配置 Nginx
2.1 主要配置文件路径
- 主配置文件:
/etc/nginx/nginx.conf
- 站点配置文件目录:
/etc/nginx/sites-available/
和/etc/nginx/sites-enabled/
2.2 常用配置项
- server: 定义一个 HTTP 服务器。
- location: 定义请求的匹配规则和处理逻辑。
- proxy_pass: 反向代理配置,将请求转发到指定的后端服务器。
- root: 设置服务器根目录。
- listen: 监听端口号。
3. 示例配置
3.1 简单的静态网站配置
server {
listen 80;
server_name example.com;
root /var/www/html;
location / {
try_files $uri $uri/ =404;
}
}
3.2 反向代理配置
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
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_set_header X-Forwarded-Proto $scheme;
}
}
4. 常用命令
- 启动 Nginx:
sudo systemctl start nginx
- 停止 Nginx:
sudo systemctl stop nginx
- 重新加载配置:
sudo systemctl reload nginx
- 检查配置文件:
sudo nginx -t
5. 高级功能
5.1 负载均衡
通过配置多个后端服务器实现负载均衡,提高服务的稳定性和性能。
5.2 HTTPS 配置
使用 SSL 证书实现 HTTPS 加密通信,提高数据安全性。
5.3 缓存配置
配置 Nginx 缓存来提升网站的访问速度和性能。
5.4 日志记录
配置日志记录,监控网站的访问情况和性能。
6. 安全设置和访问控制
6.1 防止恶意请求
使用 Nginx 的限制配置可以防止恶意请求或恶意攻击,例如:
http {
...
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
...
location / {
limit_req zone=one burst=5;
}
}
}
6.2 访问控制
Nginx 允许通过 IP 地址、HTTP 认证等方式进行访问控制,例如:
http {
...
server {
...
location /admin/ {
allow 192.168.1.0/24;
deny all;
}
}
}
7. 性能调优和监控
7.1 调优配置
通过调整 Nginx 的配置参数可以提高性能,例如:
worker_processes auto;
worker_connections 1024;
keepalive_timeout 65;
7.2 监控工具
可以使用第三方监控工具来监控 Nginx 的运行状态和性能指标,例如 Prometheus、Grafana 等。
8. 扩展功能
8.1 动态模块
Nginx 支持加载动态模块,可以根据需要扩展功能,例如添加 HTTP/2 支持、Lua 脚本等。
8.2 CDN 配置
通过配置 Nginx 实现 CDN(内容分发网络)功能,加速静态资源的访问。
8.3 WebSocket 支持
Nginx 可以配置支持 WebSocket 协议,实现实时通讯功能。
9. 高可用和故障转移
9.1 负载均衡配置
使用 Nginx 的负载均衡功能可以实现多台服务器间的流量分发,提高系统的可用性和性能。
9.2 故障转移配置
通过健康检查和故障转移配置,可以实现自动检测故障服务器并将流量转移到其他正常服务器上。
10. 日志记录和分析
10.1 访问日志
Nginx 可以记录每次请求的访问日志,包括请求的时间、来源、请求的 URI 等信息,方便后续分析和监控。
http {
...
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
access_log /var/log/nginx/access.log main;
...
}
10.2 错误日志
Nginx 也可以记录服务器发生的错误日志,方便进行故障排查和问题定位。
http {
...
error_log /var/log/nginx/error.log;
...
}
11. 容器化部署
11.1 Docker 部署
Nginx 可以通过 Docker 容器化部署,提供了灵活的部署方式和环境隔离。
docker pull nginx
docker run --name mynginx -d -p 80:80 nginx
11.2 Kubernetes 集成
Nginx 可以与 Kubernetes 结合,作为 Ingress Controller 使用,实现容器化微服务的路由和负载均衡。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
12. 性能调优和监控
12.1 调优参数
Nginx 的性能可以通过调整配置参数进行调优,例如:
worker_processes
: 设置 worker 进程的数量,可以根据 CPU 核心数进行调整。worker_connections
: 设置每个 worker 进程的最大连接数,影响并发处理能力。keepalive_timeout
: 设置长连接的超时时间,可以减少连接建立的开销。client_max_body_size
: 设置客户端请求体的最大大小,避免恶意请求占用过多资源。
events {
worker_connections 1024;
}
http {
...
keepalive_timeout 65;
client_max_body_size 100m;
...
}
12.2 监控指标
Nginx 提供了一些内置的监控指标,可以通过 HTTP 接口获取:
http://localhost/nginx_status
: 显示当前 Nginx 的运行状态,包括连接数、请求处理数等信息。http://localhost/server-status
: 显示每个服务器上活动连接的状态。
12.3 第三方监控工具
除了内置的监控接口外,还可以使用第三方监控工具进行监控和性能分析,如 Prometheus、Grafana 等,这些工具可以更加灵活地配置和展示监控数据。
13. 安全设置和访问控制
13.1 访问限制
Nginx 可以通过 allow
和 deny
指令进行访问控制,限制特定 IP 地址或 IP 地址段的访问。
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.0.0.0/8;
deny all;
}
13.2 SSL/TLS 加密
Nginx 支持 SSL/TLS 加密,可以通过配置 SSL 证书来保护数据传输的安全性。
server {
listen 443 ssl;
ssl_certificate /path/to/cert.crt;
ssl_certificate_key /path/to/cert.key;
...
}
以上是关于 Nginx 的性能调优、监控和安全设置的详细介绍。