news 2026/8/11 6:54:48

403 禁地:Nginx 拒绝所有生者进入

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
403 禁地:Nginx 拒绝所有生者进入

一、Nginx 基础介绍

1. 核心定位

高性能事件驱动 Web 服务,可做:静态资源服务器、反向代理、负载均衡、HTTPS 加密、限流、防盗链、gzip 压缩、虚拟主机、PHP 动态解析。

2. 核心优势

  1. 异步非阻塞 IO(epoll):单进程支撑万级并发,Apache 一连接一进程资源消耗极高
  2. 轻量低占用:CPU/内存消耗小,部署简单
  3. 多角色复用:一台服务同时实现静态、代理、SSL、负载均衡
  4. 热重载nginx -s reload不中断业务更新配置

3. Master-Worker 多进程架构

  1. master(root):只管理,不处理请求
    • 解析配置、管理 worker 进程、接收启停/重载信号
  2. worker(业务进程):实际处理 HTTP 请求
    • 单线程异步 IO,推荐worker_processes auto;匹配 CPU 核心数
  3. 可选缓存进程:cache manager(清理过期缓存)、cache loader(启动加载缓存)

4. 常用管理命令

nginx# 启动nginx-sstop# 强制快速停止nginx-squit# 优雅停止,处理完现有连接再退出nginx-sreload# 热重载配置(最常用)nginx-t# 校验配置语法(修改配置必执行)systemctl start/stop/restart nginx systemctlenablenginx--now# 开机自启+立即启动

二、实验环境节点规划

标准实训双节点

主机名IP作用
nginx-server10.1.8.10Nginx服务端,部署网站、证书、PHP
nginx-client10.1.8.11客户端,curl 测试、域名解析

多节点负载均衡架构

主机IP角色
proxy.laogao.cloud10.1.8.20反向代理/负载均衡服务端
nginx1/2/310.1.8.21/22/23后端真实Web节点
client10.1.8.11测试客户端

三、Nginx 配置层级结构(从外到内)

配置文件主路径:/etc/nginx/nginx.conf

1. 层级优先级(外层→内层,子覆盖父)

全局块 → events 块 → http 块 → server 虚拟主机块 → location 路径匹配块

2. 各块作用详解

  1. 全局块(所有进程全局生效)
user nginx;# Nginx运行用户worker_processes auto;# 工作进程数error_log /var/log/nginx/error.log;pid /run/nginx.pid;include /usr/share/nginx/modules/*.conf;
  1. events 块(网络并发配置)
events{worker_connections1024;# 单进程最大并发连接use epoll;# Linux IO模型}
  1. http 块(所有网站共用配置,可包含多个 server)
  • 加载 mime 类型、日志格式、sendfile 静态优化、长连接超时
  • include /etc/nginx/conf.d/*.conf;模块化加载虚拟主机(实训重点)
  1. server 块:单站点虚拟主机,绑定端口+域名
  2. location 块:同一站点内不同URL路径匹配规则

四、虚拟主机(一台服务器多个网站)

三种实现方式

  1. 基于域名(实训主流)
server{listen80;server_name web1.laogao.cloud;root /usr/share/nginx/web1;}server{listen80;server_name web2.laogao.cloud;root /usr/share/nginx/web2;}
  1. 基于端口
server{listen8081;server_name www.laogao.cloud;root /usr/share/nginx/8081;}server{listen8082;server_name www.laogao.cloud;root /usr/share/nginx/8082;}
  1. 基于IP(极少使用)

环境清理规范(老师要求)

# 统一迁移旧虚拟主机配置mkdir-p/etc/nginx/conf.d/vhostsmv/etc/nginx/conf.d/*.conf /etc/nginx/conf.d/vhosts# 删除网站测试目录rm-rf/usr/share/nginx/8081 web1 web2

五、HTTPS 证书配置(SSL/TLS)

1. 自建证书三步流程(openssl)

# 1.生成私钥 www.key(保密)openssl genrsa-outwww.key2048# 2.生成证书请求文件 www.csr(中间文件)# -subj 后必须带空格,CN=访问域名,必须和server_name完全一致openssl req-new-keywww.key-outwww.csr-subj"/C=CN/ST=JS/L=NJ/O=LG/OU=DEVOPS/CN=www.deng.cloud/emailAddress=webadmin@deng.cloud"# 3.私钥自签名生成证书 www.crt(公钥)openssl x509-req-days3650-inwww.csr-signkeywww.key-outwww.crt

2. 证书统一存放

mkdir/etc/ssl/certs/www.deng.cloudmvwww.key www.csr www.crt /etc/ssl/certs/www.deng.cloud/

3. HTTPS 虚拟主机完整配置

# 443 HTTPS站点server{listen443ssl http2;listen[::]:443 ssl http2;server_name www.deng.cloud;root /usr/share/nginx/html;# 证书路径ssl_certificate"/etc/ssl/certs/www.deng.cloud/www.crt";ssl_certificate_key"/etc/ssl/certs/www.deng.cloud/www.key";}# 80端口强制301跳转HTTPSserver{listen80;listen[::]:80;server_name www.deng.cloud;return301https://$host$request_uri;}

4. 防火墙放行HTTPS

firewall-cmd --add-service=https--permanentfirewall-cmd--reload

六、客户端域名解析报错解决(curl:6 Could not resolve host)

故障原因

Linux 客户端无 DNS 记录,无法解析自定义域名www.deng.cloud

修复方案(客户端执行)

vim/etc/hosts# 写入服务端IP+域名10.1.8.10 www.deng.cloud

验证:ping www.deng.cloud能通再 curl 测试

七、Basic 网页账号密码认证

1. 安装工具生成密码文件

yuminstall-yhttpd-tools# -c 创建文件,用户名laogao 密码123456htpasswd-b-c/etc/nginx/.htpasswd laogao123456

2. Nginx 配置(放入HTTPS server块)

location /auth-basic/{auth_basic"Basic Auth";auth_basic_user_file"/etc/nginx/.htpasswd";}

3. 测试访问

# -u 指定账号密码,-k 忽略自建证书不安全警告curl-kulaogao:123456 https://www.deng.cloud/auth-basic/

八、PHP 动态网页解析(nginx+php-fpm)

1. 安装启动PHP服务

yuminstall-yphp php-fpm php-gd php-mbstring systemctlenablephp-fpm--now# 默认监听 127.0.0.1:9000

2. 生成PHP测试页

echo"<?php phpinfo(); ?>">/usr/share/nginx/html/info.php

3. Nginx 解析PHP配置(易错点:变量拼写)

location ~\.php${try_files$uri=404;# 防路径穿透攻击fastcgi_pass127.0.0.1:9000;fastcgi_index index.php;# 易错:fastcgi_script_name 不要写成 scripy_namefastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;include fastcgi_params;}

4. 客户端测试

curl-khttps://www.deng.cloud/info.php

九、location 匹配规则(优先级从高到低)

  1. location = /uri精确匹配(最高)
  2. location ^~ /uri前缀匹配,跳过正则
  3. location ~ 正则区分大小写正则
  4. location ~* 正则不区分大小写正则
  5. location /uri普通前缀匹配
  6. location /全局兜底(最低)

proxy_pass 路径关键细节

  1. 末尾带/:剔除location匹配前缀转发
    • /api/+proxy_pass http://xxx/→ 请求/api/user转发为/user
  2. 末尾不带/:完整保留路径转发
    • /api/+proxy_pass http://xxx→ 请求/api/user转发为/api/user

十、反向代理 & 负载均衡 upstream

1. 正向代理 vs 反向代理

  • 正向代理:代理客户端(翻墙),服务器不知道真实用户
  • 反向代理:代理后端服务(实训Nginx),用户不知道真实后端服务器

2. 基础反向代理配置

location /{proxy_pass http://backends;# 必传客户端真实信息proxy_set_header Host$http_host;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;}

3. upstream 负载均衡集群

# 定义后端服务器组upstream backends{# 1.默认轮询(平均分发)server nginx1.laogao.cloud:80;server nginx2.laogao.cloud:80weight=2;# 权重,流量翻倍server nginx3.laogao.cloud:80 backup;# 备用机,其他全挂才启用# server nginx4 down; 标记下线# 2.ip_hash 会话保持,同一IP固定后端# ip_hash;# 3.least_conn 最少连接优先# least_conn;}server{listen80;server_name www.laogao.cloud;location /{proxy_pass http://backends;}}

负载均衡算法对比

算法作用使用场景
轮询(默认)请求依次分配后端性能一致,无会话需求
weight权重性能好的服务器多分流量新旧服务器混合集群
ip_hash同一客户端IP固定后端需要保存session会话
least_conn分给当前连接最少的后端后端业务耗时差异大

十一、Nginx 常见报错与排错

  1. nginx -t 语法报错
    • 拼写错误(fastcgi_scripy_name)、引号缺失、分号漏写、配置嵌套错误
    • 解决:开启vim行号:set nu,定位报错行修改
  2. curl:6 Could not resolve host
    • 客户端hosts无域名解析,修改/etc/hosts添加IP域名映射
  3. nginx: [emerg] cannot load certificate
    • 证书路径写错、证书文件未移动到/etc/ssl/certs/、权限不足
  4. 403 Forbidden 无权限访问
    • 网站目录权限不足、SELinux拦截、缺少index首页文件
    • 临时关闭selinux:setenforce 0(仅服务端执行)
  5. 502 Bad Gateway
    • php-fpm未启动、fastcgi_pass端口写错、后端服务宕机

十二、Nginx 核心内置常用变量

变量含义
$uri请求URL(不含get参数)
$argsURL问号后的查询参数
$remote_addr客户端真实IP
$host访问域名
$scheme请求协议 http/https
$request_uri完整URL(含参数)

十三、Nginx 其他实用功能

  1. gzip 压缩:减小网页传输体积
gzipon;gzip_types text/css text/html application/json application/javascript;
  1. IP访问控制
location /admin{allow10.1.8.0/24;deny all;}
  1. 日志文件
  • access.log:所有用户访问记录(IP、时间、状态码、UA)
  • error.log:服务报错、502/403等故障日志,排错核心文件
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/11 6:53:10

Qt无边框窗口开发实战:自定义标题栏、圆角阴影与拖拽拉伸

1. 项目概述&#xff1a;为什么我们需要一个“无边框”的现代窗口&#xff1f;在桌面应用开发中&#xff0c;尤其是使用 Qt 这类成熟的 GUI 框架时&#xff0c;我们常常会遇到一个矛盾&#xff1a;系统原生的窗口标题栏和边框&#xff0c;虽然提供了最小化、最大化、关闭和拖拽…

作者头像 李华
网站建设 2026/8/11 6:52:06

从零构建AI Agent命令行工具:LangChain与Typer实战指南

1. 项目概述&#xff1a;为什么我们需要一个AI Agent CLI&#xff1f;最近在折腾AI应用开发&#xff0c;发现一个挺有意思的现象&#xff1a;大家用LangChain、AutoGPT这些框架搭出来的Agent&#xff0c;功能很强大&#xff0c;但交互方式往往还停留在Web界面或者简单的脚本调用…

作者头像 李华
网站建设 2026/8/11 6:51:50

C++ vector容器深度解析:从动态数组原理到高效编程实践

1. 从“动态数组”到“瑞士军刀”&#xff1a;为什么C程序员离不开vector如果你刚开始学C&#xff0c;或者从C语言转过来&#xff0c;第一次看到vector这个词&#xff0c;可能会有点懵。它不像int、char那样直白&#xff0c;也不像array那样熟悉。但我要告诉你&#xff0c;在C的…

作者头像 李华
网站建设 2026/8/11 6:50:55

低成本网络存储!iSCSI 从 0 搭建 + 多路径高可用实操

CentOS7 iSCSI IP-SAN 完整实战博客 前言 传统服务器本地硬盘容量有限、无法多机共享&#xff0c;光纤FC SAN存储成本高昂。iSCSI基于TCP/IP以太网实现块级远程存储共享&#xff0c;俗称IP-SAN&#xff0c;普通千兆/万兆网线即可搭建共享存储&#xff0c;中小企业、机房实训首选…

作者头像 李华
网站建设 2026/8/11 6:48:10

本地部署AI声控游戏助手:低延迟语音识别与指令映射实战

这次我们来看一个很有意思的本地AI项目&#xff0c;它能把你的语音指令实时转换成游戏里的操作。想象一下&#xff0c;你对着麦克风喊“攻击”、“跳跃”、“格挡”&#xff0c;游戏角色就能立刻响应&#xff0c;这听起来像是科幻电影里的场景&#xff0c;但现在通过开源AI模型…

作者头像 李华