Linux下Nginx安装配置与性能优化实战指南
1. Linux系统下Nginx安装配置全景指南作为一款高性能的HTTP和反向代理服务器Nginx在全球网站中的使用占比已超过35%。我在运维岗位工作8年间经手部署的Nginx实例超过200个见证过各种环境下的安装陷阱。本文将呈现从源码编译到生产环境调优的全套实战经验特别适合需要在CentOS/Ubuntu等主流Linux发行版上部署Web服务的开发者。2. 基础环境准备2.1 系统要求检查执行以下命令验证系统环境# 查看系统版本 cat /etc/*release # 检查内存建议≥1GB free -h # 确认磁盘空间建议≥10GB可用 df -h注意生产环境强烈建议使用CentOS 7或Ubuntu 18.04 LTS及以上版本避免使用EOL生命周期终止的系统版本。2.2 依赖库安装Nginx编译需要以下基础库# CentOS/RHEL sudo yum install -y gcc pcre-devel zlib-devel openssl-devel # Ubuntu/Debian sudo apt-get update sudo apt-get install -y build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev3. 源码编译安装详解3.1 版本选择策略通过官网获取稳定版当前推荐1.25.x系列wget https://nginx.org/download/nginx-1.25.3.tar.gz tar zxvf nginx-1.25.3.tar.gz cd nginx-1.25.33.2 编译参数优化典型生产环境配置示例./configure \ --prefix/usr/local/nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_stub_status_module \ --with-threads \ --with-file-aio关键参数说明--with-threads启用线程池提升性能--with-file-aio启用异步文件IO--with-http_v2_module支持HTTP/2协议3.3 编译与安装make -j $(nproc) # 并行编译加速 sudo make install4. 系统集成与服务化4.1 创建systemd服务创建/etc/systemd/system/nginx.service[Unit] Descriptionnginx - high performance web server Afternetwork.target [Service] Typeforking PIDFile/usr/local/nginx/logs/nginx.pid ExecStartPre/usr/local/nginx/sbin/nginx -t ExecStart/usr/local/nginx/sbin/nginx ExecReload/bin/kill -s HUP $MAINPID ExecStop/bin/kill -s QUIT $MAINPID [Install] WantedBymulti-user.target启用服务sudo systemctl daemon-reload sudo systemctl enable nginx sudo systemctl start nginx5. 核心配置实战5.1 基础安全加固nginx.conf关键修改项server_tokens off; # 隐藏版本信息 client_max_body_size 10m; # 限制上传大小 # 禁用危险HTTP方法 if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 405; }5.2 虚拟主机配置示例/usr/local/nginx/conf/conf.d/example.com.confserver { listen 80; server_name example.com; root /var/www/example.com; index index.html; location / { try_files $uri $uri/ 404; } location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; } }6. 性能调优指南6.1 工作进程优化根据CPU核心数调整worker_processes auto; # 自动匹配CPU核心 worker_rlimit_nofile 65535; # 文件描述符限制 events { worker_connections 4096; use epoll; # Linux内核高效事件模型 }6.2 缓冲与超时设置client_body_buffer_size 16K; client_header_buffer_size 1k; client_max_body_size 8m; large_client_header_buffers 4 8k; keepalive_timeout 65; send_timeout 60;7. 故障排查手册7.1 日志分析要点错误日志路径/usr/local/nginx/logs/error.log常见错误码解析499客户端提前关闭连接502上游服务不可达503服务过载7.2 性能监控命令# 实时连接状态 ss -ant | grep :80 | awk {print $1} | sort | uniq -c # 进程资源占用 top -p $(pgrep -d, nginx)8. 高级功能扩展8.1 HTTPS配置实战使用Lets Encrypt免费证书sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d example.com自动续期配置# 添加到crontab 0 3 * * * /usr/bin/certbot renew --quiet8.2 负载均衡实现upstream backend { server 192.168.1.101:8080 weight5; server 192.168.1.102:8080; server 192.168.1.103:8080 backup; } server { location / { proxy_pass http://backend; } }9. 维护与升级9.1 平滑升级步骤# 备份旧版本 cp -r /usr/local/nginx /usr/local/nginx_old # 编译新版本时使用相同configure参数 make sudo mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old sudo cp objs/nginx /usr/local/nginx/sbin/nginx sudo kill -USR2 $(cat /usr/local/nginx/logs/nginx.pid)9.2 常用维护命令# 测试配置 nginx -t # 热重载配置 nginx -s reload # 优雅停止 nginx -s quit在实际运维中我发现Nginx的worker_processes设置为auto时在某些ARM架构服务器上会出现核心识别错误这时需要手动指定worker数量。另外当启用HTTP/2时建议同时调整ssl_buffer_size为4k以减少首包时间。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →