🔥关注墨瑾轩,带你探索编程的奥秘!🚀
🔥超萌技术攻略,轻松晋级编程高手🚀
🔥技术宝库已备好,就等你来挖掘🚀
🔥订阅墨瑾轩,智趣学习不孤单🚀
🔥即刻启航,编程之旅更有趣🚀
1. 引言:HTTP/2的魔力
嘿,亲爱的小伙伴们!欢迎来到我们的Nginx优化大冒险!🎉 在这个奇妙的旅程中,我们将一起探索如何让我们的网站像火箭一样飞速前进,而这一切的秘密武器就是——HTTP/2!
1.1 什么是HTTP/2?
在开始我们的冒险之前,让我们先来认识一下HTTP/2。HTTP/2是基于HTTP/1.1的扩展,它引入了多路复用、头部压缩、服务器推送等新特性,让数据传输变得更加高效。简单来说,HTTP/2就像是一个超级英雄,能够让我们的网站加载速度飞快,用户体验棒棒哒!
1.2 为什么选择HTTP/2?
选择HTTP/2的理由有很多,但最重要的一点就是——它快!🚀 通过减少页面加载时间,HTTP/2可以显著提升用户体验。此外,它还能减少服务器的负载,节省带宽。这就像是找到了一个既能让马儿跑得快,又不让马儿多吃草的完美解决方案!
1.3 准备工作
在我们开始配置HTTP/2之前,需要确保你的服务器已经安装了支持HTTP/2的Nginx版本。如果你还没有安装,不要担心,我会在后续的章节中手把手教你如何安装和配置Nginx。
1.4 目标与期望
我们的目标是让每个人都能够通过阅读这篇文章,学会如何优化Nginx配置,提升HTTP/2性能。无论你是编程小白还是资深开发者,我都会用最通俗易懂的语言,让你轻松掌握每一个步骤。
2. 环境准备:搭建你的Nginx舞台
好啦,现在我们已经对HTTP/2有了基本的了解,接下来就是搭建我们的Nginx环境了。别担心,我会一步步带你走的,就像搭积木一样简单!
2.1 安装Nginx
首先,我们需要在你的服务器上安装Nginx。这里以Ubuntu系统为例,打开你的终端,输入以下命令:
sudo apt update
sudo apt install nginx
这两条命令会更新你的软件包列表,并安装Nginx。如果你使用的是其他操作系统,安装方法可能会有所不同,但基本原理是相同的。
2.2 验证安装
安装完成后,我们需要验证Nginx是否安装成功。可以通过运行以下命令来启动Nginx服务:
sudo systemctl start nginx
然后,在你的浏览器中访问 http://your_server_ip
,如果看到了Nginx的欢迎页面,那么恭喜你,Nginx安装成功啦!
2.3 配置文件位置
Nginx的配置文件通常位于 /etc/nginx/
目录下。其中,主配置文件是 nginx.conf
,而具体的网站配置则通常放在 sites-available/
目录下,并创建一个以网站域名命名的配置文件。
2.4 配置文件编辑
为了编辑Nginx配置文件,你可以使用任何文本编辑器。这里以nano为例:
sudo nano /etc/nginx/nginx.conf
这个命令会打开nano编辑器,让你可以编辑 nginx.conf
文件。
2.5 基本配置
在 nginx.conf
文件中,你可以设置一些基本的配置,比如工作进程数、文件缓存路径等。这里是一个基本的配置示例:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
}
2.6 重启Nginx
每次修改配置文件后,都需要重启Nginx以使更改生效。可以使用以下命令:
sudo systemctl restart nginx
2.7 故障排查
如果在启动或重启Nginx时遇到问题,可以查看错误日志来帮助诊断问题:
sudo tail -f /var/log/nginx/error.log
3. HTTP/2的基础知识:揭开神秘面纱
3.1 什么是HTTP/2?
在我们深入配置之前,让我们先来深入了解一下HTTP/2。HTTP/2是基于HTTP/1.x的扩展,它旨在解决HTTP/1.x中的一些性能问题,比如队头阻塞(Head-of-Line Blocking)。想象一下,如果你在排队买票,前面的人买票很慢,你就得一直等着,这就是队头阻塞。HTTP/2通过多路复用(Multiplexing)解决了这个问题,让多个请求可以同时进行,大大提高了传输效率。
3.2 HTTP/2的关键特性
3.2.1 多路复用
多路复用是HTTP/2的核心技术之一,它允许多个请求在同一个TCP连接上并行传输,从而减少了连接建立和关闭的开销。这就像是在高速公路上,多辆车可以同时行驶,而不是一辆车开完再换下一辆。
3.2.2 头部压缩
HTTP/2引入了头部压缩机制,可以减少请求和响应头部的大小。这就像是给数据包穿上了紧身衣,让它们变得更小,传输更快。
3.2.3 服务器推送
服务器推送允许服务器在客户端请求之前主动发送资源。这就像是服务员在你点菜之前就给你端上了开胃菜,让你的用餐体验更加流畅。
3.3 HTTP/2与HTTPS
HTTP/2通常需要通过HTTPS来实现,因为HTTP/2的某些特性,如服务器推送,需要加密传输来保证安全。所以,在我们配置HTTP/2的时候,SSL/TLS配置是必不可少的。
3.4 如何启用HTTP/2
要启用HTTP/2,你需要确保你的Nginx版本支持HTTP/2,并且正确配置了SSL/TLS。在Nginx配置文件中,你可以使用listen
指令来指定端口,并启用HTTP/2:
server {
listen 443 ssl http2;
keepalive_timeout 65;
# SSL/TLS配置
ssl_certificate /path/to/your/certificate.pem;
ssl_certificate_key /path/to/your/private.key;
# 其他配置...
}
3.5 配置SSL/TLS
SSL/TLS配置是启用HTTP/2的关键步骤。你需要获取一个SSL证书,并在Nginx配置中指定证书和私钥的路径。这里是一个SSL/TLS配置的示例:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:AES128+EECDH';
ssl_prefer_server_ciphers on;
# 证书和私钥路径
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# 其他SSL/TLS相关配置...
3.6 测试HTTP/2配置
配置完成后,你可以使用在线工具,如HTTP/2 Test Tool,来测试你的网站是否正确启用了HTTP/2。
3.7 常见问题与解决方案
-
问题:HTTP/2没有启用。
- 解决方案:检查Nginx版本是否支持HTTP/2,确保SSL/TLS配置正确,并且使用了正确的
listen
指令。
- 解决方案:检查Nginx版本是否支持HTTP/2,确保SSL/TLS配置正确,并且使用了正确的
-
问题:页面加载速度没有改善。
- 解决方案:检查是否有其他性能瓶颈,如服务器响应时间、网络延迟等。
3.8 结语
通过本章的学习,你现在应该对HTTP/2有了更深入的理解,并且知道了如何在Nginx中启用它。记住,HTTP/2是一个强大的工具,但正确配置和优化是关键。下一章,我们将深入探讨Nginx配置HTTP/2的具体步骤,让你的网站飞起来!
4. Nginx配置HTTP/2:开启加速之旅
4.1 启用HTTP/2
欢迎来到我们HTTP/2配置的实战篇!🎈 在这一章,我们将一步步地开启Nginx的HTTP/2功能,让我们的网站像装了翅膀一样飞起来!
4.1.1 确认Nginx版本
首先,我们需要确认你的Nginx版本是否支持HTTP/2。打开终端,输入以下命令:
nginx -v
确保输出结果中包含http2
,例如:
nginx version: nginx/1.18.0
如果版本不支持HTTP/2,你需要升级到更高版本。
4.1.2 启用HTTP/2的配置
在Nginx配置文件中,找到或创建一个server
块,并添加以下配置:
server {
listen 443 ssl http2;
keepalive_timeout 65;
# SSL/TLS配置
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
# 启用SSL会话缓存和票据
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
# 其他配置...
}
这里的listen 443 ssl http2;
指令告诉Nginx在443端口上监听HTTPS请求,并启用HTTP/2。
4.2 配置SSL/TLS:安全第一
4.2.1 获取SSL证书
为了让HTTP/2发挥最大效用,我们需要通过SSL证书来启用HTTPS。你可以使用Let’s Encrypt免费获取证书:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
这些命令会安装Certbot,并自动为你的域名配置SSL证书。
4.2.2 配置SSL/TLS参数
在Nginx配置文件中,确保SSL/TLS参数正确设置:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:...';
ssl_session_tickets off; # 禁用SSL会话票据以节省内存
4.3 调整连接和请求参数
4.3.1 调整连接参数
HTTP/2的性能也受到连接参数的影响。以下是一些常见的参数调整:
http2_max_concurrent_streams 100; # 最大并行流
keepalive_timeout 65;
4.3.2 调整请求参数
调整请求参数可以进一步优化性能:
client_max_body_size 4G; # 允许上传的最大请求体大小
4.4 优化负载均衡
如果你的网站使用了多个后端服务器,负载均衡可以帮你更高效地分配请求:
upstream backend {
server backend1.example.com;
server backend2.example.com;
# 负载均衡策略,如权重、IP哈希等
}
server {
listen 80;
keepalive_timeout 65;
location / {
proxy_pass http://backend;
# 其他代理设置...
}
}
4.5 测试和验证
配置完成后,使用浏览器访问你的网站,并检查是否启用了HTTP/2。你可以使用Chrome开发者工具或在线工具如HTTP/2 Test Tool来验证。
4.6 故障排查
如果遇到问题,检查以下几点:
- 确保Nginx配置文件没有语法错误。
- 检查SSL证书是否正确配置。
- 查看Nginx的错误日志和访问日志。
4.7 结语
恭喜你,现在你的Nginx已经配置好了HTTP/2,你的网站应该能够享受到更快的加载速度了!🚀 在下一章,我们将探索如何进一步优化Nginx的性能,让网站不仅快,而且更稳定。
5. 性能调优:让Nginx飞起来
5.1 缓存策略
5.1.1 静态资源缓存
缓存是提升网站性能的重要手段。Nginx可以缓存静态资源,减少对后端服务器的请求。
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public";
}
这段配置会为图片和样式表、脚本文件设置30天的缓存时间,并添加公共缓存控制头。
5.1.2 索引页缓存
对于网站的首页或索引页,可以设置更长的缓存时间:
location /index.html {
expires 1y;
add_header Cache-Control "public";
}
5.1.3 缓存路径设置
Nginx缓存默认存储在/var/cache/nginx
目录下,你可以自定义缓存路径:
http {
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g;
...
}
5.2 压缩与解压
5.2.1 启用压缩
启用Gzip压缩可以减少传输的数据量,加快加载速度:
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
5.2.2 压缩级别
gzip_comp_level
设置压缩级别,范围是1(最快)到9(最小压缩)。5是一个平衡速度和压缩率的好选择。
5.3 利用OpenResty扩展
5.3.1 OpenResty简介
OpenResty是一个基于Nginx的全功能Web平台,它集成了一系列的模块,可以方便地进行Web应用的开发。
5.3.2 使用OpenResty进行Lua脚本编写
location /lua {
content_by_lua_block {
-- Lua代码...
}
}
5.4 连接超时设置
5.4.1 客户端连接超时
client_body_timeout 10;
client_header_timeout 10;
5.4.2 服务器端连接超时
proxy_read_timeout 90;
send_timeout 10;
5.5 负载均衡优化
5.5.1 负载均衡策略
选择合适的负载均衡策略,例如轮询、最少连接、IP哈希等:
upstream myapp {
least_conn; # 使用最少连接策略
server backend1.example.com;
server backend2.example.com;
}
5.5.2 负载均衡连接超时
proxy_next_upstream timeout non_idempotent;
proxy_connect_timeout 1s;
proxy_send_timeout 1s;
proxy_read_timeout 1s;
5.6 监控与日志
5.6.1 访问日志
access_log /path/to/access.log;
5.6.2 错误日志
error_log /path/to/error.log warn;
5.7 故障排查
5.7.1 日志分析
使用工具如awk
, grep
等分析日志文件,找出可能的问题。
5.7.2 使用Nginx内置的status模块
location /nginx_status {
stub_status on;
access_log off;
}
5.8 安全加固
5.8.1 限制请求速率
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
location / {
limit_req zone=mylimit burst=10 nodelay;
}
5.8.2 禁用不安全的HTTP方法
if ($request_method = GET) {
return 405;
}
5.9 结语
通过本章的学习,你现在应该对如何优化Nginx的性能有了更深入的理解。从缓存策略到负载均衡,再到安全加固,每一步都至关重要。记得,优化是一个持续的过程,不断学习和实践才能让你的网站更加强大。
6. 监控与日志:保持警觉
6.1 为什么监控和日志很重要?
嘿,小伙伴们!👋 在这个信息爆炸的时代,监控和日志就像是我们的千里眼和顺风耳,让我们能够洞察网站运行的每一个细节。无论是性能瓶颈、安全威胁还是用户体验问题,它们都能提供宝贵的线索。
6.2 设置访问日志
6.2.1 基本访问日志
首先,让我们来设置访问日志。这是记录每个请求的基础日志:
access_log /var/log/nginx/access.log main;
这条指令告诉Nginx将访问日志存放在/var/log/nginx/access.log
,并使用main
格式记录日志。
6.2.2 自定义日志格式
如果你需要更详细的信息,可以自定义日志格式:
log_format custom '$http_x_forwarded_for - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log custom;
6.3 设置错误日志
6.3.1 基本错误日志
错误日志记录了请求处理中的错误信息:
error_log /var/log/nginx/error.log;
6.4 使用Nginx Plus的监控模块
如果你使用的是Nginx Plus,它提供了一个强大的监控模块:
http {
status_zone;
...
}
server {
listen 80;
location /status {
status;
allow 127.0.0.1;
deny all;
}
}
这段配置启用了一个简单的监控页面,可以通过访问http://localhost/status
来查看。
6.5 使用第三方监控工具
除了Nginx自带的监控功能,还有许多第三方工具可以帮助我们监控网站性能,比如New Relic、Datadog等。
6.6 日志文件的管理
6.6.1 日志轮转
随着时间的积累,日志文件可能会变得非常大。使用logrotate
可以自动管理日志文件的轮转:
sudo apt install logrotate
然后创建一个logrotate
配置文件:
/var/log/nginx/access.log {
daily
rotate 7
compress
missingok
notifempty
create 640 root adm
postrotate
if [ -e /var/run/nginx.pid ]; then
nginx -s reload
fi
endscript
}
6.6.2 日志分析
使用awk
, grep
等工具分析日志文件,找出模式或异常:
grep "404" /var/log/nginx/access.log | awk '{print $1}'
6.7 安全日志
记录安全相关的信息,比如访问被拒绝的请求:
log_format security '$remote_addr - $remote_user [$time_local] '
'"$request" $status';
access_log /var/log/nginx/security.log security;
6.8 结语
监控和日志是我们维护网站健康的重要工具。通过本章的学习,你应该能够设置和使用Nginx的日志系统,以及如何使用第三方工具进行监控。记得,保持警觉,及时发现并解决问题,是我们作为网站管理员的责任。
7. 故障排查:解决那些小淘气
7.1 故障排查的重要性
哎呀,就算是最精心设计的网站,偶尔也会遇到一些小淘气——也就是故障和问题。😈 但别担心,今天我们就来学习如何变身为故障排查的小能手,把这些问题一一解决!
7.2 常见问题类型
在开始之前,我们先来认识一下常见的几种问题类型:
- 连接问题:用户无法访问网站。
- 性能问题:网站加载缓慢。
- 配置错误:Nginx配置不当导致的错误。
- 资源问题:服务器资源不足,如CPU或内存。
7.3 查看Nginx错误日志
当出现问题时,首先要查看Nginx的错误日志:
sudo tail -f /var/log/nginx/error.log
这个命令会实时显示最新的错误日志,帮助我们快速定位问题。
7.4 检查Nginx配置文件
配置文件中的一个小错误,就可能导致整个网站无法访问。检查配置文件是否有语法错误:
sudo nginx -t
如果配置有误,Nginx会告诉我们具体的问题所在。
7.5 使用Nginx的诊断工具
Nginx提供了一些内置的诊断工具,比如检查某个特定URL的配置:
sudo nginx -V
sudo nginx -T
7.6 网络问题排查
如果用户反馈无法访问网站,可能是网络问题。使用ping
和traceroute
(或tracepath
)来检查网络连接:
ping yourdomain.com
traceroute yourdomain.com
7.7 性能问题排查
如果网站加载缓慢,可能是性能问题。使用ab
(Apache Bench)工具进行压力测试:
ab -n 100 -c 10 http://yourdomain.com/
这个命令会模拟10个并发用户,发起100个请求。
7.8 资源监控
使用top
, htop
, vmstat
, iostat
等工具监控服务器的资源使用情况:
top
htop
vmstat 1
iostat
7.9 定位内存泄漏
如果怀疑有内存泄漏,可以使用valgrind
工具:
valgrind --tool=memcheck --leak-check=yes --show-leak-kinds=definite,indirect,possible nginx
7.10 处理第三方模块问题
如果你使用了第三方模块,确保它们的版本与Nginx兼容,并且正确配置。
7.11 重启Nginx服务
在解决了配置文件或代码错误后,记得重启Nginx服务:
sudo systemctl restart nginx
7.12 结语
故障排查是一个需要耐心和细心的过程。通过本章的学习,你应该掌握了一些基本的故障排查技巧。记住,每个问题都是一个学习的机会,不要害怕它们,而是要勇敢地面对它们!
8. 安全加固:打造坚不可摧的防线
8.1 网络安全的重要性
嘿,小伙伴们!🌟 在这个数字化的世界里,网络安全就像是我们的超级英雄,保护我们的网站不受坏蛋的侵害。今天,我们就来学习如何给我们的Nginx网站穿上坚不可摧的盔甲!
8.2 防止DDoS攻击
DDoS攻击是一种常见的网络攻击方式,它可以让我们的网站瞬间瘫痪。为了防止DDoS攻击,我们可以:
- 使用云服务提供商的DDoS防护服务。
- 配置Nginx的
limit_req
模块来限制请求频率。
http {
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/m;
...
server {
location / {
limit_req zone=mylimit burst=10 nodelay;
}
}
}
8.3 使用SSL/TLS加密
SSL/TLS加密是我们保护数据传输安全的盾牌。确保你的网站启用了HTTPS:
server {
listen 443 ssl;
ssl_certificate /path/to/your/certificate.pem;
ssl_certificate_key /path/to/your/private.key;
...
}
8.4 配置安全的HTTP头部
HTTP安全头部可以帮助我们防止跨站脚本攻击(XSS)和点击劫持等安全问题:
http {
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options nosniff;
...
}
8.5 防止CSRF攻击
跨站请求伪造(CSRF)是一种攻击方式,攻击者可以利用用户的登录状态发起恶意请求。虽然Nginx本身不处理CSRF,但我们可以配置应用程序来防止它:
- 在表单提交时使用CSRF令牌。
- 使用HTTP-only和Secure标志来设置cookies。
http {
cookie_secure on;
...
}
server {
...
location ~* \.(?!js|css|png|jpg|jpeg|gif|ico) {
add_header Set-Cookie "cookie_secure=1";
}
}
8.6 配置防火墙
使用防火墙来限制访问和过滤恶意流量:
sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS'
8.7 定期更新和打补丁
保持Nginx和所有依赖的软件是最新版本,以修复已知的安全漏洞:
sudo apt update
sudo apt upgrade
8.8 监控未授权访问尝试
监控访问日志,查找可疑的访问模式或未授权访问尝试:
grep -i "Unauthorized" /var/log/nginx/access.log
8.9 使用Web应用防火墙(WAF)
Web应用防火墙可以提供额外的安全层,过滤恶意请求:
http {
include /etc/nginx/waf/waf.conf;
...
}
8.10 结语
通过本章的学习,你现在应该对如何保护你的Nginx网站有了更深入的理解。记住,网络安全是一个持续的过程,我们需要不断地更新和加固我们的防线。
9. 结语:优化无止境
9.1 持续优化的重要性
亲爱的小伙伴们,🌈 我们的Nginx配置优化之旅即将到达终点。但请记住,网站的优化是一个永无止境的过程。随着技术的发展和用户需求的变化,我们需要不断地学习新知识,尝试新方法,以保持我们的网站始终处于最佳状态。
9.2 回顾我们的旅程
在这篇文章中,我们一起学习了如何从零开始配置Nginx,如何启用HTTP/2,如何进行性能调优,以及如何确保网站的安全。每一步都至关重要,每一步都让我们的网站更加强大。
9.3 持续学习
- 保持好奇心:对新技术保持好奇,不断探索和尝试。
- 加入社区:加入Nginx和其他Web技术社区,与其他开发者交流心得。
- 阅读文档:官方文档是最好的学习资源,经常阅读可以帮助你深入了解Nginx的各个方面。
9.4 实践是检验真理的唯一标准
理论知识固然重要,但只有通过实践,才能真正掌握它们。不要害怕尝试和犯错,每次失败都是向成功迈进的一步。
9.5 监控和维护
- 定期检查:定期检查服务器和网站的运行状态。
- 日志分析:定期分析日志,及时发现并解决问题。
- 性能测试:定期进行性能测试,确保网站加载速度符合预期。
9.6 准备应对未来挑战
- 技术更新:随着HTTP/3等新技术的出现,我们需要准备好更新和升级我们的网站。
- 安全威胁:网络安全形势不断变化,我们需要时刻准备应对新的安全威胁。
9.7 结语
感谢你跟随我一起完成了这次Nginx配置优化的旅程。希望这篇文章能够成为你网站优化之路上的一盏明灯,照亮你前行的方向。🌟
9.8 常见问题解答(FAQ)
Q: 我应该如何开始学习Nginx?
A: 从阅读官方文档开始,然后尝试在测试环境中配置和使用Nginx。
Q: 我在哪里可以找到Nginx的社区和资源?
A: 互联网上有许多Nginx社区和论坛,比如Nginx官方社区,Stack Overflow等。
Q: 我如何知道我的网站是否需要优化?
A: 如果你的网站加载速度慢,或者用户体验不佳,可能就是时候考虑优化了。
Q: 我应该如何监控我的网站性能?
A: 使用工具如New Relic, Datadog或Google Analytics来监控网站性能。
Q: 我如何保护我的网站免受攻击?
A: 使用SSL/TLS加密,配置防火墙,使用Web应用防火墙(WAF),并定期更新和打补丁。
9.9 附录:资源列表
- Nginx官方文档:https://nginx.org/en/docs/
- Nginx社区:https://nginx.org/en/community/
- Let’s Encrypt:免费SSL证书https://letsencrypt.org/
- HTTP/2 Test Tool:https://tools.keycdn.com/http2-test
10. 附录:常用配置参数速查表
10.1 监听和服务器配置
listen
: 指定Nginx监听的端口和IP。listen 80;
server_name
: 设置当前server块处理的域名。server_name example.com www.example.com;
10.2 文件和资源配置
root
: 设置网站根目录。root /var/www/html;
index
: 设置默认首页。index index.html index.htm;
10.3 SSL/TLS配置
ssl_certificate
: 指定SSL证书文件路径。ssl_certificate /etc/ssl/certs/nginx.crt;
ssl_certificate_key
: 指定SSL私钥文件路径。ssl_certificate_key /etc/ssl/private/nginx.key;
10.4 性能优化配置
keepalive_timeout
: 设置连接保持活动的超时时间。keepalive_timeout 65;
worker_processes
: 设置Nginx工作进程数。worker_processes auto;
10.5 缓存配置
proxy_cache_path
: 设置代理缓存路径。proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g;
expires
: 设置静态资源的过期时间。location ~* \.(jpg|jpeg|png|gif)$ { expires 30d; }
10.6 日志配置
access_log
: 设置访问日志文件路径。access_log /var/log/nginx/access.log;
error_log
: 设置错误日志文件路径。error_log /var/log/nginx/error.log;
10.7 安全配置
limit_req
: 限制请求频率,防止DDoS攻击。limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/m;
X-Frame-Options
: 防止点击劫持。add_header X-Frame-Options "SAMEORIGIN";
10.8 负载均衡配置
upstream
: 定义负载均衡的服务器列表。upstream myapp { server backend1.example.com; server backend2.example.com; }
proxy_pass
: 指定请求转发的上游服务器。location / { proxy_pass http://myapp; }
10.9 监控和状态页面配置
stub_status
: 开启状态监控页面。location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; }
10.10 其他实用配置
gzip
: 开启Gzip压缩。gzip on;
log_format
: 自定义日志格式。log_format main '$http_x_forwarded_for - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"';
10.11 结语
希望这个速查表能成为你日常配置Nginx时的得力助手。🛠️ 记住,配置优化是一个需要不断实践和调整的过程。不要害怕尝试新的配置,但同时也要确保每次更改都有充分的测试和验证。