终极 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 的高性能和高并发处理能力。无论是初学者还是资深运维人员,都能从这份配置指南中获得宝贵的知识和经验。
热门推荐
如何解决Go模块下载缓慢或失败的问题
2025家校信息沟通平台建设计划
购房者必看:超高得房率的真相
多地出新规,减少公摊面积,提升得房率!杭州 “神户型”会重出江湖么?
杭州古建筑设计,探寻设计精髓,领略文化之美
江南传统民居建筑构件特征
席慕容乡愁
孩子出现这些症状,可能是抑郁症的前兆|世界精神卫生日
用Arduino蓝牙模块控制LED的详细教程
上涨无量的原因是什么?这种现象反映了市场的哪些情况?
为什么316不锈钢保温杯横行,304是真的不行了
本土散白酒还“香”吗?
薄荷生长的条件与环境(适合薄荷生长的地方与要素,带你了解薄荷的生长秘密)
叶凡:一位被誉为“电视剧歌后”的传奇歌手
秦可卿与太虚幻境:《红楼梦》中最深的伏笔
资本公积金转增注册资本:法律框架与实务操作
生物化学与分子生物学——酶通论
古画里的惊蛰时节:从北宋到清代的春雷画卷
2024年全球手机销量排名:小米第三 TOP5中增速最快
Science:睡眠医学的突破,大脑会在梦境中巩固积极情绪
海南七日游全攻略:八大热门景点与详细行程安排
如何为中小企业设计供应链金融方案?
少先队员走进老司城博物馆感受土司文化魅力
生物技术与生物医学科学:有什么区别?
500块拿不出手?被份子钱压垮的年轻人开始反击
保温电水壶怎么样?都市生活必备的保温煮水神器
果胶铋:胃疼时的“守护神”
治疗胃病必备药物奥美拉唑为何在空腹时服用?慎用与3种药物搭配
2024驾校学费价格表全解析
木纹砖环保价廉木地板温馨自然,环保与经济舒适与颜值,施工攻略一网打尽!