【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
  • 浏览器访问

五、反向代理

相关推荐
大树889 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠9 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质9 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush49 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5209 小时前
Linux 11 动态监控指令top
linux
Inhand陈工10 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智10 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩11 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_11 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈11 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix