Nginx从安装到配置:一份完整的入门指南
· 8分钟阅读 · 适合0-3年运维
Nginx 之于运维,就像锅铲之于厨师——不会用 Nginx,你这运维也没法干。全球超过三分之一的网站跑在 Nginx 上,它轻量、高并发、配置灵活。今天这篇,从零开始带你装好 Nginx 并配出一个能用的 Web 服务。
一、安装 Nginx
方式一:yum安装(CentOS 7/8)
# 安装epel源(CentOS 7)yum install -y epel-release# 安装nginxyum install -y nginx# 查看版本nginx -v# 启动并设置开机自启systemctl start nginxsystemctl enable nginx# 检查状态systemctl status nginx
方式二:apt安装(Ubuntu)
# 更新源apt update# 安装nginxapt install -y nginx# 启动并设置开机自启systemctl start nginxsystemctl enable nginx
💡 yum/apt 安装的 Nginx 版本可能比较旧。如果需要最新版,可以去 nginx 官方添加源仓库,或者编译安装。初学阶段先用包管理器装,够用了。
方式三:编译安装(需要特定模块时)
# 安装编译依赖yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel# 下载源码cd /usr/local/srcwget http://nginx.org/download/nginx-1.24.0.tar.gztar xzf nginx-1.24.0.tar.gzcd nginx-1.24.0# 编译配置(按需添加模块)./configure --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_stub_status_module \ --with-http_gzip_static_module# 编译并安装make && make install# 启动/usr/local/nginx/sbin/nginx
二、目录结构与核心配置文件
安装完先搞清楚文件在哪,不然改配置像盲人摸象。
三、主配置文件 nginx.conf 解读
# nginx.conf 核心结构# 全局块worker_processes auto; # worker进程数,auto表示按CPU核数自动error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;# events块events {worker_connections 1024; # 每个worker最大连接数}# http块http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] ' '"$request" $status$body_bytes_sent ' '"$http_referer" "$http_user_agent"';access_log /var/log/nginx/access.log main;sendfile on;keepalive_timeout 65;# 包含子配置文件include /etc/nginx/conf.d/*.conf;}
配置文件从外到内分四层:全局块 → events块 → http块 → server块 → location块,一层套一层,像俄罗斯套娃。
四、实战:配置一个静态网站
在 /etc/nginx/conf.d/ 下新建一个配置文件:
# 创建配置文件 vim /etc/nginx/conf.d/site.confserver {listen 80; # 监听端口server_name www.example.com; # 域名,没有域名写IProot /usr/share/nginx/html; # 网站根目录index index.html index.htm; # 默认首页location / {try_files $uri $uri/ =404; # 找不到文件返回404} # 配置日志按天切割(简化版)access_log /var/log/nginx/site_access.log main;error_log /var/log/nginx/site_error.log warn;# 静态资源缓存location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d; # 缓存30天add_header Cache-Control "public, no-transform";}}# 测试配置语法是否正确(非常重要!)nginx -t# 重新加载配置(不中断服务)nginx -s reload# 检查端口是否监听ss -tlnp | grep :80
⚠️ 每次改完配置文件,一定要先 nginx -t 测试语法,再 reload。直接 reload 如果配置有语法错误,Nginx 可能直接罢工。这是血泪教训。
五、实战:配置反向代理
Nginx 最常用的场景之一就是反向代理,把前端请求转发到后端应用服务器。
server {listen 80;server_name api.example.com;location / {proxy_pass http://127.0.0.1:8080; # 转发到后端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_connect_timeout 30s;proxy_read_timeout 60s;}# 健康检查端点location /health {proxy_pass http://127.0.0.1:8080/health;access_log off;}}
六、常用运维命令速查
💡 面试常问:reload 和 restart 的区别?reload 是平滑重载,不会断开已有连接;restart 是重启进程,会导致瞬间的服务中断。生产环境永远用 reload。
七、原创脚本:Nginx日志按天切割
#!/bin/bash# 本脚本为「随风跑」原创编写# 功能:Nginx日志按天切割,保留30天# 用法:加入crontab,每天0点执行LOG_DIR="/var/log/nginx"PID_FILE="/var/run/nginx.pid"KEEP_DAYS=30DATE=$(date +%Y%m%d) YESTERDAY=$(date -d "yesterday" +%Y%m%d 2>/dev/null || date -v-1d +%Y%m%d)# 重命名日志文件cd $LOG_DIRfor log_file in access.log error.log; do if [ -f "$log_file" ]; then mv "$log_file" "${log_file}.${YESTERDAY}" fi done# 通知Nginx重新打开日志文件kill -USR1 $(cat $PID_FILE)# 清理旧日志find $LOG_DIR -name "*.log.*" -type f -mtime +${KEEP_DAYS} -delete echo "[$DATE] Nginx日志切割完成"# 加入定时任务crontab -e# 添加一行0 0 * * * /opt/scripts/nginx_log_rotate.sh >> /var/log/nginx/rotate.log 2>&1
总结
Nginx 入门核心就三步:装好、配对、测通。记住配置的套娃结构(http → server → location),掌握 nginx -t 和 nginx -s reload 这对黄金搭档,日常运维就够用了。后面我们还会讲 Nginx 的负载均衡、HTTPS 配置、限流等进阶玩法,敬请期待。
文章转自运维AI小子,侵删
Web服务基础介绍 Nginx基础 Nginx核心配置详解 Nginx高级配置 Nginx Rewrite相关功能 Nginx反向代理功能 系统参数优化 LNMP项目实战-Wordpress站点搭建



特别声明:资料来源网络,PDF版仅做分享学习,侵删
扫描下方二维码
备注:Nginx学习笔记
即可100%免费领取
(是扫码领取,不是在公众号后台回复,
别看错了哦)
夜雨聆风