当前位置: 首页 > news >正文

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

  1. 检查 Nginx 配置是否正确
  2. 创建、监控 worker 进程的数量和状态
  3. 接收对 Nginx 的管理指令,并作出对应操作

工作进程:worker

  1. 处理客户端请求
  2. 接收 master 发来的指令,并做对应操作

(默认情况下,nginx会建立和服务器CPU核心数相等的worker进程,woker进程之间相互独立,若一个进程故障不会影响其它进程 )

nginx关键工作机制

抢占机制

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

异步非阻塞模式

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

nginx正向代理功能

定义

正向代理是位于客户端与目标服务器之间的代理服务器,客户端通过代理服务器间接访问目标服务器,目标服务器仅知晓代理服务器,不知真实客户端

作用场景
  1. 突破网络访问限制,如访问受区域限制的资源
  2. 隐藏客户端真实 IP,提升隐私性
  3. 实现请求的集中管理与过滤,如缓存资源、过滤请求内容
配置思路

在 Nginx 配置文件中,通过resolver指定 DNS 解析器(如resolver 8.8.8.8;),再通过location块配置请求转发规则,将客户端请求代理到目标服务器

示例

客户端需访问被区域限制的国外网站,配置 Nginx 正向代理后,客户端向 Nginx 发送请求,Nginx 转发请求至目标网站,再将响应返回给客户端,目标网站仅记录 Nginx 的 IP,从而实现访问与隐私保护

nginx反向代理功能

定义

反向代理是位于客户端与后端服务器之间的代理服务器,客户端直接访问代理服务器,代理服务器将请求转发至后端服务器并返回结果,客户端无需知晓后端服务器信息

核心功能
  1. 负载均衡:分发请求至多台后端服务器,避免单点过载
  2. 隐藏后端架构:客户端仅与代理服务器交互,提升系统安全性
  3. SSL 终端:统一处理 HTTPS 加密解密,减轻后端服务器负担
  4. 缓存静态资源:将频繁访问的静态内容缓存至代理服务器,加速响应
适用场景

网站流量负载均衡、微服务架构入口、跨域请求处理、CDN 节点缓存等

nginx负载均衡功能

定义

负载均衡是 Nginx 反向代理的核心功能,通过将客户端请求分发至多台后端服务器,实现流量分摊,避免单点过载,提升系统可用性与并发处理能力。

常见策略
  1. 轮询(默认):按请求顺序依次分配至后端服务器,适用于服务器性能相近场景。
  2. 加权轮询:为服务器设置权重(weight),权重越高分配请求越多,适用于服务器性能差异场景。
  3. IP 哈希:根据客户端 IP 地址计算哈希值分配服务器,确保同一客户端始终访问同一服务器,适用于会话保持场景。
  4. 最少连接:将请求分配至当前活跃连接数最少的服务器,动态优化资源利用率。
配置示例

在 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             # 检查配置文件的语法错误,无错返回ok

nginx配置文件

[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 {
#        }

http://www.dtcms.com/a/598334.html

相关文章:

  • 个人制作的网站做废铝的关注哪个网站好
  • 网站做受网站wordpress添加媒体失败
  • 【从 `.exe` 到 CPU:一次加法背后的完整旅程】
  • 17.模型微调——微调数据集构建
  • html5 响应式网站网站默认地区数据修改
  • 风电组网环境多苛刻?
  • 有没有专门做字体排版设的网站百度智能小程序生态
  • 响应式网站展示型十堰学网站建设培训班
  • 涌现能力 是什么
  • 【datawhale】RAG学习笔记
  • 上传文件到网站营口网站seo
  • 西安网站制作公司排名电销系统开发
  • 对电子商务网站建设和管理的理解如何做商城网站小程序
  • 巧妙运用长尾关键词实现SEO关键词优化新高度
  • 泛型的细节
  • 免费的外贸网站推广方法wordpress游客发帖
  • 济南网站建设公品牌全网推广
  • 4-ARM-PEG-Iodoacetamide(2),化学特性
  • ps怎么做网站导航内嵌式门户网站的运营
  • 现在建设网站都用什么软件下载前后端分离企业网站源码
  • detr目标检测+deepsort/strongsort/bytetrack/botsort算法的多目标跟踪实现
  • 企业自建网站工业设计公司排行
  • 比较对称性对结构图像的影响
  • 网站登录页面怎么做的网站建设siteserver
  • Windows电脑的Hyper-V虚拟机使用(ubuntu系统及磁盘空间扩展)
  • 重庆万州网站建设报价有哪些高大上的网站
  • 最佳建站模板外网进入学校内局域网建设的网站
  • 网站logo如何替换深圳网站建设小江
  • 石狮app网站开发c 网站开发需要什么软件
  • Facebook 引流脚本:功能、风险与合规使用指南