网站首页 > 技术教程 正文
大家好,我是mikechen。
Nginx是非常重要的负载均衡中间件,被广泛应用于大型网站架构,下面我就全面来详解Nginx@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
Nginx
Nginx是一款轻量级的高性能的Web服务器和反向代理服务器,是由俄罗斯的程序设计师Igor Sysoev所开发。
Nginx 处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。
Nginx特点
由于以下这几点,所以使用Nginx非常火,在互联网项目中广泛应用。
- 相较于 Apache具有占有内存少、稳定性高、并发能力强等优势;
- Nginx 使用基于事件驱动架构,使得其可以支持数以百万级别的 TCP 连接;
- 高度的模块化、扩展性好、和自由软件许可证、使得第三方模块层出不穷;
- Nginx 是一个跨平台服务器,可以运行在 Linux、Windows、Mac OS 等操作系统上。
Nginx功能应用
1.正向代理
正向代理最大的特点是:客户端非常明确要访问的服务器地址,服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端,正向代理模式屏蔽或者隐藏了真实客户端信息。
例如:在大陆访问www.google.com,我们需要一个代理服务器,我们通过代理服务器去访问谷歌,这个过程就是正向代理。
来看个示意图:
我们可以通过这种方式,访问原来无法访问的资源,比如:Google。
2.反向代理
反向代理,客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器。
来看个示意图:
由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
3.负载均衡
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上。
来个示意图:
将用户访问的请求,根据负载均衡算法,分发到集群中的一台处理服务器,这就是我们说的负载均衡。
4.动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。
来个示意图:
Nginx使用
1.Nginx官网下载
Nginx下载地址:https://nginx.org/en/download.html
2.下载稳定版
如下图所示:
然后再把Nginx的下载包,上传Linux服务器。
3.Nginx命令
Nginx常用命令:
nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。
nginx -s reopen 重新打开日志文件。
nginx -c filename 为 Nginx 指定一个配置文件,来代替缺省的。
nginx -t 不运行,仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
nginx -v 显示 nginx 的版本。
nginx -V 显示 nginx 的版本,编译器版本和配置参数。
4.Nginx目录结构
├── conf # Nginx所有配置文件的目录
│ ├── fastcgi.conf # fastcgi相关参数的配置文件
│ ├── fastcgi.conf.default # fastcgi.conf的原始备份文件
│ ├── fastcgi_params # fastcgi的参数文件
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types # 媒体类型
│ ├── mime.types.default
│ ├── nginx.conf # Nginx主配置文件
│ ├── nginx.conf.default
│ ├── scgi_params # scgi相关参数文件
│ ├── scgi_params.default
│ ├── uwsgi_params # uwsgi相关参数文件
│ ├── uwsgi_params.default
│ └── win-utf
├── fastcgi_temp # fastcgi临时数据目录
├── html # Nginx默认站点目录
│ ├── 50x.html # 错误页面优雅替代显示文件,例如当出现502错误时会调用此页面
│ └── index.html # 默认的首页文件
├── logs # Nginx日志目录
│ ├── access.log # 访问日志文件
│ ├── error.log # 错误日志文件
│ └── nginx.pid # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp # 临时目录
├── sbin # Nginx命令目录
│ └── nginx # Nginx的启动命令
├── scgi_temp # 临时目录
└── uwsgi_temp # 临时目录
5.Nginx配置
Nginx配置文件所在位置:nginx/conf/nginx.conf。
Nginx配置结构
main # 全局配置,对全局生效
├── events # 配置影响 nginx 服务器或与用户的网络连接
├── http # 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置
│ ├── upstream # 配置后端服务器具体地址,负载均衡配置不可或缺的部分
│ ├── server # 配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块
│ ├── server
│ │ ├── location # server 块可以包含多个 location 块,location 指令用于匹配 uri
│ │ ├── location
│ │ └── ...
│ └── ...
└── ...
Nginx配置含义
- 全局块main:nginx 的全局配置,对全局生效;
- events:配置影响 nginx 服务器或与用户的网络连接;
- http:可以嵌套多个 server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置;
- server:配置虚拟主机的相关参数,一个 http 中可以有多个 server;
- location:配置请求的路由,以及各种页面的处理情况;
- upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。
Nginx配置文件
worker_processes 1;# worker进程的数量
events { # 事件区块开始
worker_connections 1024;# 每个worker进程支持的最大连接数
} # 事件区块结束
http { # HTTP区块开始
include mime.types;# Nginx支持的媒体类型库文件
default_type application/octet-stream;# 默认的媒体类型
sendfile on;# 开启高效传输模式
keepalive_timeout 65;# 连接超时
server { # 第一个Server区块开始,表示一个独立的虚拟主机站点
listen 80;# 提供服务的端口,默认80
server_name localhost;# 提供服务的域名主机名
location / { # 第一个location区块开始
root html;# 站点的根目录,相当于Nginx的安装目录
index index.html index.htm;# 默认的首页文件,多个用空格分开
} # 第一个location区块结果
error_page 500502503504 /50x.html;# 出现对应的http状态码时,使用50x.html回应客户
location = /50x.html { # location区块开始,访问50x.html
root html;# 指定对应的站点目录为html
}
}
6.使用示例
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
#server_name localhost;
server_name 192.168.71.167;
location / {
root html;
#添加下面的一句话
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
以上
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
猜你喜欢
- 2024-10-09 nginx入门(三)——nginx基本指令和配置文件
- 2024-10-09 Nginx配置前后端服务(nginx前端服务器)
- 2024-10-09 Ngnix全局块的工作进程的两个指令
- 2024-10-09 Nginx常用命令(nginx常用命令有哪些)
- 2024-09-08 Ngnix服务的命令行控制(ngnix keepalive)
- 2024-09-08 Nginx入门的基本使用和配置详解(nginx使用教程)
- 2024-09-08 Nginx 面试通关秘籍-13.如何在 Nginx 中启用 gzip 压缩?配置参数?
- 2024-09-08 Nginx的rewrite之if指令(nginx index指令)
- 2024-09-08 2021年nginx最新系列之nginx配置文件详解
- 2024-09-08 Nginx——location常见配置指令,alias、root、proxy_pass
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)