终极 Nginx 配置指南:最新版实践
创作时间:
作者:
@小白创作中心
终极 Nginx 配置指南:最新版实践
引用
CSDN
等
8
来源
1.
https://blog.csdn.net/weixin_45081413/article/details/138792348
2.
https://github.com/nginx/nginx/releases
3.
https://docs.nginx-cn.net/nginx-oss-sub/releases
4.
https://nginx.org/en/download.html
5.
https://en.linuxadictos.com/nginx-1-24-0-has-already-been-released-and-these-are-its-news.html
6.
https://www.oschina.net/news/214308/nginx-1-22-1-n-1-23-2-released
7.
https://devopsden.io/article/what-are-changes-in-nginx-1.24
8.
https://www.phoronix.com/news/Nginx-1.24-Released
Nginx 1.27.1 是目前最新的稳定版本,于 2024 年 8 月 14 日发布。作为全球第二大 Web 服务器,Nginx 在高流量网站和应用程序中占据重要地位。本文将详细介绍 Nginx 的最新配置指南,从基础配置到高级功能,从最佳实践到常见问题解决,帮助读者全面掌握 Nginx 的使用和优化。
01
Nginx 配置文件结构
Nginx 的配置文件通常位于 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf。配置文件由多个指令块组成,主要包括以下几个部分:
全局块
全局块包含影响 Nginx 全局的指令,通常位于配置文件的最顶部。
user www-data;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
user:指定运行 Nginx 的用户和组。worker_processes:指定工作进程的数量,通常设置为 CPU 核心数或auto。error_log:指定错误日志的路径和日志级别。pid:指定 Nginx 主进程的 PID 文件路径。
events 块
events 块用于配置网络连接相关的参数。
events {
worker_connections 1024;
use epoll;
multi_accept on;
}
worker_connections:每个工作进程允许的最大连接数。use:指定事件模型,如epoll(Linux 高效事件模型)。multi_accept:允许每个工作进程同时接受多个连接。
http 块
http 块是 Nginx 配置的核心部分,用于配置 HTTP 服务器相关指令。
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html index.htm;
}
}
}
include:包含其他配置文件,如 MIME 类型文件。default_type:设置默认的 MIME 类型。access_log:指定访问日志的路径和格式。sendfile:启用高效文件传输模式。keepalive_timeout:设置客户端与服务器之间的长连接超时时间。gzip:启用 Gzip 压缩,减少传输数据量。
server 块
server 块用于配置虚拟主机,每个 server 块对应一个虚拟主机。
server {
listen 80;
server_name example.com www.example.com;
location / {
root /var/www/example;
index index.html index.htm;
}
location /images/ {
alias /var/www/images/;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
listen:指定监听的端口和 IP 地址。server_name:指定虚拟主机的域名。location:配置请求的路由和处理方式。
location 块
location 块用于配置请求的路由和处理方式,支持正则表达式匹配。
location / {
root /var/www/html;
index index.html index.htm;
}
location /images/ {
alias /var/www/images/;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
root:指定请求的根目录。index:指定默认的索引文件。alias:定义路径别名,用于替换 location 路径。~:表示使用正则表达式匹配。fastcgi_pass:指定 FastCGI 服务器的地址。
02
高级功能配置
反向代理配置
Nginx 常用作反向代理服务器,将客户端请求转发到后端服务器。
location /api/ {
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;
}
proxy_pass:指定后端服务器的地址。proxy_set_header:设置转发给后端服务器的请求头。
SSL/TLS 配置
Nginx 支持 SSL/TLS 加密,保护数据传输的安全性。在最新版本中,默认启用了 TLSv1.3 协议。
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /var/www/html;
index index.html index.htm;
}
}
ssl_certificate:指定 SSL 证书文件路径。ssl_certificate_key:指定 SSL 私钥文件路径。ssl_protocols:指定使用的 SSL/TLS 协议版本。ssl_ciphers:指定加密套件。ssl_prefer_server_ciphers:优先使用服务器端的加密套件。
负载均衡配置
Nginx 可以作为负载均衡器,将请求分发到多个后端服务器。
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
upstream:定义后端服务器组。server:指定后端服务器的地址。
03
最佳实践
性能优化建议
- 启用 Gzip 压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
- 使用缓存
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";
- 优化连接设置
keepalive_timeout 65;
keepalive_requests 100;
安全配置建议
- 限制请求方法
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
- 防止点击劫持
add_header X-Frame-Options SAMEORIGIN;
- 防止 XSS 攻击
add_header X-XSS-Protection "1; mode=block";
日常运维经验分享
- 定期检查日志
tail -f /var/log/nginx/error.log
使用 Nginx Plus 或开源监控工具进行监控
定期更新 Nginx 版本,应用安全补丁
04
常见问题与解决方案
502 Bad Gateway
- 检查后端服务器是否正常运行
- 检查 Nginx 和后端服务器之间的网络连接
403 Forbidden
- 检查文件权限和目录权限
- 确保 Nginx 用户有读取权限
SSL/TLS 握手失败
- 检查证书和私钥是否匹配
- 确保 OpenSSL 版本兼容
性能瓶颈
- 优化配置参数(如 worker_processes、worker_connections)
- 使用缓存和压缩
- 调整操作系统内核参数
Nginx 的配置文件结构清晰,指令丰富,能够满足各种复杂的 Web 服务器需求。通过合理配置,可以充分发挥 Nginx 的高性能和高并发处理能力。无论是初学者还是资深运维人员,都能从这份配置指南中获得宝贵的知识和经验。
热门推荐
法律路径是什么?一文详解民事、刑事、行政案件处理流程
公司绩效工资分配方案的制定与实施指南
汽车托运公司哪家便宜点
办公室岗位日常事务处理流程有哪些?
在职场上,如何提高自己的解决问题能力?
壬寅宫变:明朝嘉靖年间的一场宫廷政变
怎么练出烟嗓
固态硬盘参数详解:从入门到精通的技术指南
抑郁症的"终生服药魔咒",我们真的破不了吗?
中国电信网上营业厅怎么查通话记录
js如何提取response的data
本田皓影是否适合进行隔音处理?
四类建设工程施工合同的法律适用
开室内儿童乐园对场地有什么要求?
黑茶的加工工艺及步骤详解
如何优雅地使用Markdown
发际线后移:原因与预防减缓措施
接种疫苗后可能出现的反应及如何处理?
绝平震惊!迈阿密国际2-2亚特兰大联无缘六连胜梅西替补表现不佳
铅笔画山水画入门指南:从准备到完成的全面教程
深圳中小企业办公室选址全攻略:从需求分析到签约避坑指南
天麻钩藤颗粒的副作用及使用注意事项
汽车维护关键:火花塞的清洁与更换
如何准确测量孩子的身高和胸围
微信视频号的重要性与应用(解析微信视频号的作用及用途)
梦见一群小狗咬我
2024年成都幼儿园入园政策详解
家庭自酿白酒的5个简单步骤
公交车道法定工作日:城市交通的运营与规律
宇宙起源探究:大爆炸理论及其影响