nginx介绍与简单操作
介绍
简介
Nginx 是一款轻量级 HTTP 服务器,也是一款邮箱代理服务器,同时具备反向代理、通用 TCP/UDP 代理的功能,并且可以运行在 x86、ARM 等多种平台上,同时支持 Linux、Windows 等主流的操作系统
特点
1.支持高并发
单机 Nginx 可支持十万级的并发连接,经过优化后可最高支持百万级并发连接内存
2.资源消耗低
在同级 web 服务器中,Nginx 占用的内存最少,一万非活跃的 http keep-alive 连接仅消耗 2.5M
3.内存高扩展性
和 Apache 一样,Nginx 采用模块化设计,并支持非常丰富的第三方模块
高可靠性
Nginx 采用 master-worker 模式,如果 worker 出现故障,master 可以快速开启一个新的 worker 来提供服务
nginx架构
主进程:master
- 检查 Nginx 配置是否正确
- 创建、监控 worker 进程的数量和状态
- 接收对 Nginx 的管理指令,并作出对应操作
工作进程:worker
- 处理客户端请求
- 接收 master 发来的指令,并做对应操作
(默认情况下,nginx会建立和服务器CPU核心数相等的worker进程,woker进程之间相互独立,若一个进程故障不会影响其它进程 )

nginx关键工作机制
抢占机制
当客户端发起请求时,会激活accept_mutex互斥锁,哪个worker抢占了该互斥锁,该客户端的请求就由那个worker响应和处理

异步非阻塞模式
在传统事件处理模式下,如果所有的worker被客户端阻塞后,新来的客户就需要等待,直到原来的客户端释放worker后才能被处理请求,在异步非阻塞模式下,底层使用了linux的epoll模型,就算worker被阻塞,新的客户端请求也会被正常处理

nginx正向代理功能
定义
正向代理是位于客户端与目标服务器之间的代理服务器,客户端通过代理服务器间接访问目标服务器,目标服务器仅知晓代理服务器,不知真实客户端
作用场景
- 突破网络访问限制,如访问受区域限制的资源
- 隐藏客户端真实 IP,提升隐私性
- 实现请求的集中管理与过滤,如缓存资源、过滤请求内容
配置思路
在 Nginx 配置文件中,通过resolver指定 DNS 解析器(如resolver 8.8.8.8;),再通过location块配置请求转发规则,将客户端请求代理到目标服务器
示例
客户端需访问被区域限制的国外网站,配置 Nginx 正向代理后,客户端向 Nginx 发送请求,Nginx 转发请求至目标网站,再将响应返回给客户端,目标网站仅记录 Nginx 的 IP,从而实现访问与隐私保护

nginx反向代理功能
定义
反向代理是位于客户端与后端服务器之间的代理服务器,客户端直接访问代理服务器,代理服务器将请求转发至后端服务器并返回结果,客户端无需知晓后端服务器信息
核心功能
- 负载均衡:分发请求至多台后端服务器,避免单点过载
- 隐藏后端架构:客户端仅与代理服务器交互,提升系统安全性
- SSL 终端:统一处理 HTTPS 加密解密,减轻后端服务器负担
- 缓存静态资源:将频繁访问的静态内容缓存至代理服务器,加速响应
适用场景
网站流量负载均衡、微服务架构入口、跨域请求处理、CDN 节点缓存等

nginx负载均衡功能
定义
负载均衡是 Nginx 反向代理的核心功能,通过将客户端请求分发至多台后端服务器,实现流量分摊,避免单点过载,提升系统可用性与并发处理能力。
常见策略
- 轮询(默认):按请求顺序依次分配至后端服务器,适用于服务器性能相近场景。
- 加权轮询:为服务器设置权重(weight),权重越高分配请求越多,适用于服务器性能差异场景。
- IP 哈希:根据客户端 IP 地址计算哈希值分配服务器,确保同一客户端始终访问同一服务器,适用于会话保持场景。
- 最少连接:将请求分配至当前活跃连接数最少的服务器,动态优化资源利用率。
配置示例
在 Nginx 配置文件中,通过 upstream 模块定义后端服务器组(如 upstream backend {server 192.168.1.100 weight=5; server 192.168.1.101;}),再通过 proxy_pass 指令将请求转发至该服务器组。

配置操作与实验
部署Nginx
[root@server ~]# setenforce 0 [root@server ~]# systemctl stop firewalld[root@server ~]# systemctl disable firewalld[root@server ~]# yum install nginx -y[root@server ~]# nginx -V # 查看版本,编译器、配置参数等信息[root@server ~]# systemctl start nginx # 启动httpd[root@server ~]# systemctl enable nginx # 设置开机启动
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.[root@server ~]# systemctl status nginx # 查看状态,q键退出查看[root@server ~]# ps -ef | grep nginx # 查看进程
root 1690 1 0 13:57 ? 00:00:00 nginx: master process /usr/sbin/nginx
nginx 1691 1690 0 13:57 ? 00:00:00 nginx: worker process
nginx 1692 1690 0 13:57 ? 00:00:00 nginx: worker process
root 1726 1510 0 14:00 pts/0 00:00:00 grep --color=auto nginx# 测试,Windows中打开浏览器输入服务器IP地址常用命令
systemctl系列
systemctl start nginx # 启动服务systemcctl restart nginx # 重启服务systemctl enable nginx # 开机启动systemctl stop nginx # 停止服务systemctl disable nginx # 取消开机启动systemctl status nginx # 查看状态nginx自带命令
nginx # 启动nginxnginx restart # 重启服务nginx -s reload # 重新加载配置文件nginx -s stop # 强行停止服务nginx -s quit # 优雅停止服务,即所有请求处理完后退出服务nginx -v # 查看版本号nginx -t # 检查配置文件的语法错误,无错返回oknginx配置文件
[root@server ~]# cd /etc/nginx # 服务目录
[root@server nginx]# yum install tree -y
[root@server nginx]# tree
.
├── conf.d # 子配置文件目录
├── default.d
├── fastcgi.conf
├── fastcgi.conf.default
├── fastcgi_params
├── fastcgi_params.default
├── koi-utf # KOI8-R 编码(俄语)转换的映射文件
├── koi-win # KOI8-R 编码(俄语)转换的映射文件
├── mime.types # 配置支持的媒体类型
├── mime.types.default # 样例文件
├── nginx.conf # 主配置文件
├── nginx.conf.default # 样例文件
├── scgi_params
├── scgi_params.default
├── uwsgi_params
├── uwsgi_params.default
└── win-utf # KOI8-R 编码(俄语)转换的映射文件2 directories, 15 files网页默认目录:/usr/share/nginx/html
访问日志:/var/log/nginx/access.log
错误日志:/var/log/nginx/error.log主配置文件
[root@server ~]# vim /etc/nginx/nginx.conf结构
全局配置
- 运行用户
- Worker 数量
- 日志参数
- Include 导入的外部配置文件
性能配置
- 工作模式
- TCP 连接数
- HTTP 模块配置
- HTTP 请求和响应的参数
路由配置
- 虚拟主机配置
- 反向代理配置
- 负载均衡配置
层级结构图

nginx.conf 配置文件的语法规则
- 配置文件由指令与指令块构成
- 每条指令以 “;” 分号结尾,指令与参数间以空格符号分隔
- 指令块以 {} 大括号将多条指令组织在一起
- include 语句允许组合多个配置文件以提升可维护性
- 通过 # 符号添加注释,提高可读性
- 通过 $ 符号使用变量
- 部分指令的参数支持正则表达式,例如常用的 location 指令
使用cpolar实现内网穿透
cpolar 是一款无需公网 IP、无需路由器端口映射的内网穿透工具,能快速将内网服务(网站、接口、设备等)暴露到公网,实现远程访问。
核心原理
- 本地安装 cpolar 客户端,与 cpolar 云端服务器建立加密连接。
- 云端分配公网访问地址(临时 / 固定域名),所有公网请求通过该地址转发到内网对应服务。
- 无需修改路由器配置,支持 HTTP/HTTPS/TCP/UDP 等多种协议。
核心优势
- 操作简单:全程图形化界面或少量命令,新手可快速上手。
- 跨平台支持:Windows、Mac、Linux、树莓派等系统均兼容。
- 灵活适配:支持临时测试(免费版)和长期使用(付费固定域名)。
- 安全可靠:传输数据加密,自带身份验证机制。
基础使用步骤
- 下载安装:从 cpolar 官网获取对应系统客户端,完成安装并注册账号。
- 启动服务:打开 cpolar 客户端,登录后选择要穿透的协议(如 HTTP),填写内网服务的 IP 和端口(如本地网站的 127.0.0.1:8080)。
- 获取公网地址:启动穿透后,cpolar 会生成公网访问域名,复制该域名即可在外部设备访问内网服务。
- 进阶配置(可选):付费用户可申请固定域名、配置自定义域名,或调整连接稳定性参数。
常见使用场景
- 本地开发测试:将本地 Web 项目、接口暴露给外部同事或客户预览。
- 远程访问设备:远程控制内网电脑、访问 NAS 文件、管理内网路由器。
- 内网服务共享:分享内网搭建的网站、数据库、游戏服务器等。
使用nginx的http_ssl模块建立加密认证网站
查看
[root@server ~]# nginx -V
# 看是否有--with-http_ssl_module模块,否则需要安装mod_ssl配置文件
- 证书文件:/……/xxxx.crt
- 私钥文件:/……/xxxx.key
ssl配置文件的主要参数
[root@server ~]# vim /etc/nginx/nginx.conf # 主配置文https段,默认为注释,可以取消注释
# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2; # 监听443端口
# listen [::]:443 ssl http2;
# server_name _; # 域名
# root /usr/share/nginx/html; # 网页默认
#
# ssl_certificate "/etc/pki/nginx/server.crt"; # 证书路径
# ssl_certificate_key "/etc/pki/nginx/private/server.key"; # 私钥文件路径
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers PROFILE=SYSTEM;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }