康乐县网站建设,深圳公明网站建设公司,化隆县公司网站建设,邵阳找工作网站一、Nginx出问题了咋整#xff1f;#xff08;故障排查思路#xff09;Nginx出问题#xff0c;别慌#xff01;按这个顺序查#xff1a;先看Nginx活着没#xff1a;systemctl status nginx再看错误日志#xff1a;tail -f /var/log/nginx/error.log#xff08;这玩意儿…一、Nginx出问题了咋整故障排查思路Nginx出问题别慌按这个顺序查先看Nginx活着没systemctl status nginx再看错误日志tail -f /var/log/nginx/error.log这玩意儿最重要80%的问题都能在这里找到线索验证配置文件nginx -t看看配置语法对不对测试网络通不通curl -v http://localhost看能不能连上检查后端服务比如PHP、Tomcat、Node.js等服务是不是挂了二、最常见的10个坑和解决办法1. 502 Bad Gateway后端服务连不上啥情况用户访问网站报502错误咋回事Nginx连不上后端服务器比如PHP-FPM挂了咋解决bash# 先看错误日志确认 tail -f /var/log/nginx/error.log # 显示connect() failed (111: Connection refused) # 重启后端服务 systemctl restart php-fpm # 或者你的后端服务 # 如果还不行增加超时时间 # 在nginx配置里加这几行 proxy_connect_timeout 10s; proxy_read_timeout 30s;2. 重定向循环ERR_TOO_MANY_REDIRECTS啥情况浏览器一直跳来跳去最后报错咋回事配置写错了比如HTTP跳HTTPSHTTPS里又跳HTTPS死循环了咋解决nginx# 错误写法 server { listen 443 ssl; return 301 https://$host$request_uri; # 这就死循环了 } # 正确写法 server { listen 80; return 301 https://$host$request_uri; # HTTP才跳HTTPS } server { listen 443 ssl; # 这里正常处理请求别再跳转了 }3. SSL证书过期啥情况浏览器提示证书无效/过期咋回事证书过期了没自动续期咋解决bash# 检查证书啥时候过期 openssl x509 -enddate -noout -in /etc/ssl/certs/nginx.crt # 更新证书Lets Encrypt用户 certbot renew --force-renewal # 重载Nginx systemctl reload nginx4. 高并发扛不住性能瓶颈啥情况访问量一大网站就卡咋优化nginx# 在nginx.conf里调整 worker_processes auto; # worker进程数 CPU核心数 events { worker_connections 10000; # 每个worker最多连1万个 use epoll; # Linux高性能IO模型 } http { sendfile on; # 高效文件传输 tcp_nopush on; # 减少网络包数量 keepalive_timeout 30; # 长连接超时 keepalive_requests 1000; # 一个连接最多处理1000个请求 }5. 静态资源加载慢咋优化nginx# 给图片、CSS、JS加缓存 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 365d; # 缓存一年 add_header Cache-Control public; access_log off; # 静态资源不记日志省IO }6. 被攻击DDoS咋防护nginx# 限制每个IP的请求频率 limit_req_zone $binary_remote_addr zonereq_limit:10m rate10r/s; # 限制每个IP的并发连接数 limit_conn_zone $binary_remote_addr zoneconn_limit:10m; server { location / { limit_req zonereq_limit burst20 nodelay; # 每秒最多10个请求 limit_conn conn_limit 10; # 最多10个并发连接 } }7. location匹配混乱啥情况想匹配/api结果匹配到别的地方去了咋调试nginx# 加个响应头看看到底匹配到了哪个location location /api { add_header X-Match-Type Prefix; # 前缀匹配 return 200; } location /api/v1 { add_header X-Match-Type Exact; # 精确匹配 return 200; }然后用curl -I看返回的头信息8. 日志文件太大咋解决用logrotate自动切割日志bash# /etc/logrotate.d/nginx /var/log/nginx/*.log { daily # 每天切一次 rotate 30 # 保留30天 compress # 压缩旧日志 postrotate systemctl reload nginx # 切完重载Nginx endscript }9. HTTP/2优化咋配置nginxserver { listen 443 ssl http2; # 开启HTTP/2 ssl_certificate /etc/ssl/certs/nginx.crt; ssl_certificate_key /etc/ssl/private/nginx.key; ssl_early_data on; # 开启0-RTT更快 ssl_ciphers EECDHCHACHA20:EECDHAESGCM; # 优先用快的加密算法 }10. 灰度发布AB测试啥情况新版本只想给一部分用户先用咋实现nginx# 根据IP或User-Agent分流 split_clients ${remote_addr} $variant { 50% new; # 50%用户去新版本 50% old; # 50%用户用老版本 } server { location / { if ($variant new) { proxy_pass http://new_backend; # 新版本 } proxy_pass http://old_backend; # 老版本 } }三、常用命令速查想干啥用啥命令检查配置对不对nginx -t查看完整配置nginx -T重载配置不中断服务systemctl reload nginx重启Nginxsystemctl restart nginx看错误日志tail -f /var/log/nginx/error.log看访问日志tail -f /var/log/nginx/access.log看Nginx进程ps aux | grep nginx看端口监听netstat -tulnp | grep nginx测试SSL证书openssl s_client -connect localhost:443跟踪重定向curl -vL http://example.com四、运维必知的黄金法则1. 变更三板斧先备份改配置前先cp nginx.conf nginx.conf.bak后测试nginx -t验证配置灰度发先改一台机器试试水没问题再全量2. 监控四要素错误率5xx错误 0.1%响应时间95%的请求 100ms资源使用CPU/内存使用率 80%流量波动突然暴涨要警惕3. 安全底线关掉版本号server_tokens off;别让黑客知道你用的版本加安全头X-Frame-Options、XSS-Protection这些定期更新特别是OpenSSL心脏滴血漏洞还记得吗最小权限Nginx不要用root跑用www-data用户4. 排障口诀一查状态、二看日志、三验配置、四测网络、五溯后端意思就是先看Nginx活着没systemctl status再看错误日志说了啥error.log然后验证配置对不对nginx -t接着测网络通不通curl/telnet最后查后端服务挂了没五、灾备恢复出事咋办配置回滚bash# 改配置前先备份 cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak # 出问题了就恢复 cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf nginx -t systemctl reload nginx用Git管理配置bashcd /etc/nginx git init git add . git commit -m 初始配置 # 出问题了回滚到上一个版本 git log # 看commit id git reset --hard commit-id nginx -t systemctl reload nginx总结Nginx运维其实没那么难记住几个要点日志是亲爹80%的问题错误日志里都能找到答案配置改了要测试nginx -t不花钱养成习惯备份备份备份重要的事情说三遍监控要到位别等用户投诉了才发现网站挂了安全不能省该加的防护都要加别偷懒