【Nginx】

文章目录


一、认识Nginx

1、what 什么是 Nginx?

官方定义

Nginx(读音:Engine X)是一款免费、开源、高性能、轻量级的 HTTP Web 服务器、反向代理服务器、负载均衡器。由俄罗斯程序员 Igor Sysoev 开发,2004 年正式开源发布,目前是全球使用率最高的 Web 服务软件之一。

区别于传统 Apache 服务器,Nginx 基于异步、非阻塞、事件驱动模型设计,主打高并发、低内存、高稳定性。

核心身份定位

  • 静态 Web 服务器:直接部署静态资源(HTML/CSS/JS/图片),替代 Apache、Tomcat 静态服务能力。
  • 反向代理服务器:客户端请求统一入口,转发请求到后端应用服务,隐藏后端真实地址。
  • 负载均衡器:将海量流量分发到多台后端服务器,解决单服务器压力瓶颈,提升集群可用性。
  • HTTP 网关:实现 HTTPS 加密、限流、缓存、黑白名单、URL 重写、跨域处理等统一流量管控能力。

核心架构特点

采用 Master + Worker 多进程模型:

  • Master 主进程:负责管理配置、调度 Worker 进程、监控服务状态、实现热重载。
  • Worker 工作进程:负责处理客户端所有网络请求,默认进程数等同于 CPU 核心数,资源利用率极高。
  • 事件驱动模型:基于 epoll(Linux)实现异步非阻塞,单进程可维持上万并发连接。

2、why 为什么用 Nginx?

核心优势

对比传统服务器(Apache、Tomcat),Nginx 在生产环境成为首选,核心原因是性能强、稳定高、功能全、成本低。

  • 超高并发能力
    Apache采用同步阻塞模型,单进程处理单请求,并发上限低;Nginx异步非阻塞,单台服务器可支撑10万+并发连接,是高并发场景首选。
  • 极低资源占用
    运行时内存占用极小,百兆并发下仅占用几十 MB 内存,服务器硬件成本更低,低配机器也能稳定运行。
  • 高稳定性、高可用
    支持热加载、热部署,修改配置后可平滑生效,无需重启服务,不中断用户请求,适合7*24小时运行。
  • 功能极度丰富
    原生支持反向代理、负载均衡、静态缓存、Gzip 压缩、HTTPS、限流、防攻击、URL 重写、动静分离,无需额外插件即可满足绝大多数业务场景。
  • 跨平台、开源免费
    支持 Linux、Windows、MacOS 系统,开源协议宽松,无商业授权成本,企业、个人均可免费使用。
  • 扩展性极强
    模块化设计,支持 Lua 脚本、第三方模块扩展,可实现自定义网关、监控、限流、灰度发布等高级功能。

解决的行业痛点

  • 解决单台 Tomcat 并发不足、性能瓶颈问题;
  • 解决后端服务地址暴露、网络安全风险问题;
  • 解决多服务集群流量分配不均、单点故障问题;
  • 解决静态资源访问慢、带宽占用高的问题;
  • 解决多域名、多项目统一入口管理混乱问题。

3、where

Nginx 是互联网项目的流量入口标配,几乎所有网站、小程序、后端服务、微服务架构中都会部署,覆盖绝大多数 Web 业务场景。

静态资源部署场景

  • 电商
  • 政务
  • 门户

反向代理场景(最核心、最常用)

作为客户端与后端服务的中间层,接收用户请求,转发给后端 Java、Python、Node 服务,隐藏后端真实 IP 和端口,提升系统安全性和解耦性。

负载均衡集群场景

后端部署多台业务服务器,通过 Nginx 统一分发流量,实现:

  • 流量均分,避免单服务器过载;
  • 自动剔除故障节点,实现服务高可用;
  • 支持灰度发布、流量权重分配。

二、安装Nginx

安装Nginx

三、配置Nginx静态站点

1、清理默认页面

  • 切换当前工作目录到 Nginx 的默认网页根目录
  • 强制删除当前目录下的 index.html 文件(默认首页文件)

2、上传自定义页面

  • 自定义网页文件上传到服务器的 /usr/share/nginx/html 目录下
  • 用 vim 编辑器打开 Nginx 的主配置文件 nginx.conf

3、配置生效

  • 网站服务的核心配置

4、浏览器验证

  • 访问服务器 IP 192.168.13.128

四、配置lnmp动态站点

1、认识lnmp

Linux + Nginx + MySQL + PHP

2、安装数据库和php

安装MySQL数据库 见博客

  • 安装 REMI 源(提供 CentOS 7 高版本 PHP)
bash 复制代码
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install -y yum-utils
yum-config-manager --enable remi-php74
  • 安装 PHP 及常用扩展(WordPress 必需)
bash 复制代码
yum install -y php74 php74-php-fpm php74-php-cli php74-php-mysqlnd php74-php-gd php74-php-mbstring php74-php-xml php74-php-xmlrpc php74-php-zip php74-php-opcache
  • 配置 PHP-FPM(用户 / 组改为 nginx)
bash 复制代码
# 修改用户和组为 nginx
vim /etc/opt/remi/php74/php-fpm.d/www.conf
bash 复制代码
user = nginx
group = nginx
listen = 127.0.0.1:9000
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
  • 启动 PHP-FPM 并开机自启
bash 复制代码
systemctl enable --now php74-php-fpm
systemctl restart php74-php-fpm

3、数据库基础配置

  • 登录 MySQL
bash 复制代码
mysql -u root -p
  • 创建 WordPress 数据库与用户
bash 复制代码
# 创建一个名为 wordpress 的数据库 默认使用 utf8mb4 字符集
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# 创建一个 MySQL 登录账号
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'Root@123456';

# 给账号全部权限让它能管理数据库
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';

# 刷新权限 让新设置立即生效
FLUSH PRIVILEGES;

# 退出 MySQL 命令行
EXIT;

4、下载并配置 WordPress

  • 下载解压 WordPress
bash 复制代码
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -zxf latest.tar.gz
  • 移动到网站根目录
bash 复制代码
mv wordpress /var/www/
  • 权限设置
bash 复制代码
chown -R nginx:nginx /var/www/wordpress
chmod -R 755 /var/www/wordpress
  • 复制配置文件
bash 复制代码
cd /var/www/wordpress
cp wp-config-sample.php wp-config.php
  • 编辑 wp-config.php 填入数据库信息
bash 复制代码
vim wp-config.php
bash 复制代码
define('DB_NAME', 'wordpress');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', '你的强密码');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');



5、配置 Nginx 支持 WordPress + PHP

  • 创建独立配置文件
bash 复制代码
vim /etc/nginx/conf.d/wordpress.conf
bash 复制代码
server {
    listen 80;
    server_name 192.168.13.128; # 换成你的域名或公网IP
    root /var/www/wordpress;
    index index.php index.html;

    # WordPress 伪静态
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # PHP 转发给 php-fpm
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 禁止访问隐藏文件
    location ~ /\. {
        deny all;
    }
}
  • 测试 Nginx 配置并重启
bash 复制代码
nginx -t
# 显示 syntax is ok 再重启
systemctl restart nginx
  • 浏览器访问

五、反向代理

相关推荐
网络与设备以及操作系统学习使用者6 小时前
Linux与Windows核心差异深度解析
linux·运维·网络·windows·学习
筠筠喵呜喵6 小时前
Linux CPU性能优化:D状态和Z状态排查与处理
linux·服务器·性能优化
fiveym7 小时前
PXE安装Debian报错:GRUB安装失败排查指南
运维·debian
张小姐的猫8 小时前
【Linux】多线程 —— 线程同步 | 生产者消费者模型 | POSIX 信号量
linux·运维·服务器
handler018 小时前
【MySQL】教你库与表的增删查改操作(基础)
运维·数据库·笔记·sql·mysql·数据·分析
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ8 小时前
【无标题】
nginx
biter down9 小时前
12:参数化测试,一套用例批量跑 N 组数据
运维·python
十年一梦实验室10 小时前
【ChatGPT】阳极氧化线 Global SI 自动化系统深度拆解、爆炸图10张、信息图10张、C++代码框架
运维·自动化
Harm灬小海10 小时前
【云计算学习之路】学习Centos7系统-Linux下用户及组管理
linux·运维·服务器·学习·云计算