乐于分享
好东西不私藏

Nginx从安装到配置:一份完整的入门指南

Nginx从安装到配置:一份完整的入门指南

Nginx从安装到配置:一份完整的入门指南

         · 8分钟阅读 · 适合0-3年运维

Nginx 之于运维,就像锅铲之于厨师——不会用 Nginx,你这运维也没法干。全球超过三分之一的网站跑在 Nginx 上,它轻量、高并发、配置灵活。今天这篇,从零开始带你装好 Nginx 并配出一个能用的 Web 服务。

一、安装 Nginx

方式一:yum安装(CentOS 7/8)

# 安装epel源(CentOS 7) yum install -y epel-release # 安装nginx yum install -y nginx # 查看版本 nginx -v # 启动并设置开机自启 systemctl start nginx systemctl enable nginx # 检查状态 systemctl status nginx

方式二:apt安装(Ubuntu)

# 更新源 apt update # 安装nginx apt install -y nginx # 启动并设置开机自启 systemctl start nginx systemctl enable nginx

💡 yum/apt 安装的 Nginx 版本可能比较旧。如果需要最新版,可以去 nginx 官方添加源仓库,或者编译安装。初学阶段先用包管理器装,够用了。

方式三:编译安装(需要特定模块时)

# 安装编译依赖 yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel # 下载源码 cd /usr/local/src wget http://nginx.org/download/nginx-1.24.0.tar.gz tar xzf nginx-1.24.0.tar.gz cd 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

二、目录结构与核心配置文件

安装完先搞清楚文件在哪,不然改配置像盲人摸象。

路径
说明
/etc/nginx/nginx.conf
主配置文件
/etc/nginx/conf.d/
子配置目录(虚拟主机配置放这里)
/usr/share/nginx/html/
默认网站根目录
/var/log/nginx/access.log
访问日志
/var/log/nginx/error.log
错误日志
/etc/nginx/mime.types
MIME类型映射文件

三、主配置文件 nginx.conf 解读

# nginx.conf 核心结构 # 全局块 worker_processes auto;        # worker进程数,auto表示按CPU核数自动 error_log /var/log/nginx/error.log warnpid /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.conf server {       listen 80;                          # 监听端口       server_name www.example.com;        # 域名,没有域名写IP       root /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;          } }

六、常用运维命令速查

命令
作用
nginx -t
测试配置文件语法
nginx -T
测试并打印完整配置
nginx -s reload
平滑重载配置
nginx -s stop
快速停止
nginx -s quit
优雅停止(处理完当前请求)
nginx -V
查看编译参数和模块
systemctl reload nginx
通过systemd重载

💡 面试常问: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=30 DATE=$(date +%Y%m%d) YESTERDAY=$(date -d "yesterday" +%Y%m%d 2>/dev/null || date -v-1d +%Y%m%d) # 重命名日志文件 cd $LOG_DIR for 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小子,侵删

文末分享
今天给大家分享一份超详细的Nginx学习笔记,它一共8个章节113页。从基础介绍到实战应用,内容全面丰富,知识点脉络清晰,图文并茂,特别适合基础薄弱的小白入门,看完这篇文档,相信你一定能搞懂Nginx,PDF干货满满,建议收藏。
本文将从以下几个部分进行详解(由于内容过多,仅展示部分内容):
  • Web服务基础介绍
  • Nginx基础
  • Nginx核心配置详解
  • Nginx高级配置
  • Nginx Rewrite相关功能
  • Nginx反向代理功能
  • 系统参数优化
  • LNMP项目实战-Wordpress站点搭建

特别声明:资料来源网络,PDF版仅做分享学习,侵删

扫描下方二维码

备注:Nginx学习笔记

即可100%免费领取

(是扫码领取,不是在公众号后台回复,

别看错了哦)