学习 nginx 你需要知道的内容
Nginx 是什么?
- Nginx是一款轻量级 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在 BSD-like 协议下发行。其特点是占有内存少,并发能力强。
- 换句话说 Nginx 是一款轻量级的 Web 服务器,并且占内存少并发能力强
有 Node.js 为啥还要学 Nginx
- 众所周知,Node 本身是可以做 HTTP 服务器的,Node 流行后端框架中(Express,Koa,Nest)也都具备 HTTP 服务器能力,既然如此,我们为什么要学习 Nginx?
- Node 做服务端,本身就是为了业务层服务的,很难充分利用服务器硬件资源处理 HTTP 本身的逻辑,大量负载的情况下,容易造成网络阻塞甚至崩溃。
安装方式
- Windows
- http://nginx.org/
- 下载安装包并解压
- 打开解压目录内
nginx.exe
所在目录,双击nginx.exe
- 复制
nginx.exe
路径到 cmd 中并进入 - 输入
./nginx -v
显示版本号即安装成功 - 浏览器输入
localhost:80
即可访问 nginx 的首页
- Linux
- 通过 yum 安装 nginx
sudo yum install -y nginx
- 启动 nginx
sudo systemctl start nginx.service
- 设置开机自启
sudo systemctl enable nginx.service
- 浏览器中输入
localhost:80
即可访问 nginx 的首页
- 通过 yum 安装 nginx
- 注意
- nginx 默认监听 80 端口,但是电脑中可能会有其他程序占用 80 端口所以可能访问 80 时无法访问,可以通过修改配置更改监听端口
修改配置
- Windows
- nginx 的配置文件时 conf 目录下的 nginx.conf,在 vscode 中打开可以修改文件内容
- 如果我们想要修改监听端口可以去修改上图中的 11 行 http 内部 23 行 server 中的 listen,截图中是我修改后的,监听了 81 端口,域名是 localhost
- default_type 和 charset 可以按需添加,作用是避免页面汉字乱码
- location / {} 中的
- root 表示对应的入口文件目录,也就是 conf 目录同级的 html 目录
- index 表示入口文件为 index.html 或者 index.htm
- 如果要修改文件,可以去对应位置打开文件修改
- Linux
- 查询 nginx 配置文件地址
nginx -t
- 默认返回
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
- 默认返回
- 修改配置
vi /etc/nginx/nginx.conf
http {server { listen 80; # 端口号,可修改为自己需要的server_name http://10.60.xxx; # 域名 location / { # 监听的路径 root /xxx; # 首页所在目录,有默认值,也可以自定义 index index.html index.htm; # 默认入口 }} }
- 查询 nginx 配置文件地址
- 修改配置后,一定要重启 nginx
- Windows
./nginx -s reload
- Linux
nginx -s reload
- Windows
Nginx 架构常用命令操作
nginx -t
测试配置是否正确,配置文件修改后先操作验证,在进行后续操作。nginx -s reload
加载最新配置,等待全部子进程结束,然后开辟新的子进程使用新的配置。nginx -s reopen
重新打开日志,重命名 access.log 日志文件,并重新创建新 access.log 文件,再次访问查看变化。nginx -s quit
优雅停止,等待全部子进程处理完毕,不再开启新的子进程。nginx -s stop
立即停止,不等待子进程处理,立即停止所有子进程及主进程。- 其他操作命令可以通过帮助命令
nginx -h
进行查看 - windows 在修改命令为
./nginx -XXXX
配置项与含义
- 想要真正用好 nginx 我们需要对其运行逻辑和配置项有充分的了解
全局配置区域
Main #全局配置区,Nginx 核心功能配置
events{ # events 事件区,子进程核心配置}
http { # http 服务器配置区server { # 不同服务配置区location { # location 不同请求路径配置区}}}
mail{ # 邮件代理配置区server{ # 邮件服务配置区}
}
默认配置解析
配置项中出现的 include /xx/xx
是引入外部配置项;#
则是注释内容;
Windows 与 Linux 中默认配置不同,但配置项含义都是一样的
user www-data; #使用那个用户角色运行 Nginx
worker_processes auto; #允许开启的 worker 数量,通常设置成和cpu的数量相等
pid /run/nginx.pid; # pid 路径
include /etc/nginx/modules-enabled/*.conf; #引入其他配置项
events { # 事件区# 每个 work 进程支持的最大链接数,理论值 65535 每个进程的最大句柄数 worker_connections 1024; # 2字节==16位,
}
http { # http 区#sendfile 指定 nginx 调用 sendfile 函数(zero copy 方式)来输出文件,#配合 tcp_nopush 与 tcp_nodelay 完成数据的快速响应sendfile on; tcp_nopush on; # 数据包会累积后一起传输,可以提高传输效率。tcp_nodelay on; #小的数据包不等待直接传输# tcp_nopush 与 tcp_nodelay 互斥,Nginx 会借助sendfile 进行平衡处理# 持久链接打开的超时时长keepalive_timeout 65;# 散列表的冲突率,越大,消耗内存越多,冲突率越低,检索速度就更快types_hash_max_size 2048;# mime 类型列表include /etc/nginx/mime.types; # 默认 mime 类型 流default_type application/octet-stream;# 协商ssl加密算法时,优先使用服务端的加密套件ssl_prefer_server_ciphers on;# [错误]日志存储路径access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;# 开启 gzip 协议压缩,减少数据传输量gzip on;# 引入其他配置文件include /etc/nginx/conf.d/*.conf;server { #server区 # 设置系统监听端口 listen 80 default_server;listen [::]:80 default_server; # 定义服务器访问默认根路径root /var/www/html;# 定义首页索引文件的名称index index.html index.htm index.nginx-debian.html;# 定义访问域名server_name _;# location 区域,相当于路由判断location / {try_files $uri $uri/ =404;}}
}
反向代理与正向代理
- 反向代理就是外部客户端通过网关访问内网服务器上的内容,网关起到了反向代理的功能,内网服务器不对外提供服务,一般由防火墙设立拦截,之对外暴露网关端口
- 简单来说
- 反向代理,代理的是服务器,帮助服务器处理请求响应给客户端,隐藏真实服务器响应。
- 正向代理,代理的是客户端,帮助客户端获取目标服务器的数据,隐藏真实客户端请求。
- 举个例子
- 反向代理
- 我们去饭店吃饭,这家饭店有豫菜,鲁菜,川菜,也分别有三个菜系对应的厨师,但是我们去饭店吃饭,并不需要管事那个厨师炒的菜,只需要点菜下单即可,有服务员将菜分配给不同的厨师去具体处理,那么这个服务员就充当了反向代理服务器
- 正向代理
- 我们通常无法直接访问外网,这时候可以通过一个代理服务器帮助我们来访问外网,比如说我无法访问 服务器A,但是可以访问 服务器B,那么我可以去访问 服务器B,然后由 服务器B 去帮我把请求转发给 服务器A,这种就叫正向代理,比如说 VPN 就是这样的流程
- 反向代理
负载均衡
内网服务器因为要处理大量的业务逻辑,因此,内网单台服务器的响应能力非常有限,为了提供更加快速的响应,一般会在内网架设多台业务逻辑处理器,当某一台正在工作时,可以由其他正在闲置的服务器来处理请求响应;
后端多台相同的业务逻辑服务器,被称为服务器集群;而当请求到来时,到底由那台服务器进行处理,取决于代理转向那台服务器,这项能力,就叫负载均衡
学习 nginx 你需要知道的内容相关推荐
- Nginx静态资源压缩实战内容介绍
经过上述内容的优化,我们再次思考一个问题,假如在满足上述优化的前提下,我们传送一个1M的数据和一个10M的数据那个效率高?,答案显而易见,传输内容小,速度就会快.那么问题又来了,同样的内容,如果把大小 ...
- Learning NGINX 学习NGINX Lynda课程中文字幕
Learning NGINX 中文字幕 学习NGINX 中文字幕Learning NGINX 使用业界标准的开源Web服务器NGINX建立高性能架构 除了负载均衡和HTTP缓存等额外功能之外,NGIN ...
- 学习Nginx,看完这篇超详细的文章就够了
目录 本文简介 一.Nginx的基本概念 1.1.Nginx是什么? 1.2.Nginx能帮助我们做些什么? 1.3.Nginx的特性 二.Nginx的安装 2.1.环境介绍 2.2.安装Nginx ...
- 菜鸟学习nginx之接收HTTP Header
上一篇介绍了<菜鸟学习nginx之接收HTTP请求行>,本篇介绍Nginx接收HTTP Header处理流程. 一.HTTP Header处理流程 处理Header与上一篇处理HTTP请求 ...
- Nginx使用教程(五):使用Nginx缓存之缓存静态内容
NGINX虽然已经对静态内容做过优化. 但在高流量网站的情况下,仍然可以使用open_file_cache进一步提高性能. NGINX缓存将最近使用的文件描述符和相关元数据(如修改时间,大小等)存储在 ...
- web前段学习day_01:HTML(学习如何搭建页面结构和内容):文本标签、列表标签、图片标签、超链接、表格、表单表单、分区标签、实体引用
学习如何构造页面结构和内容 安装HBuilderX 一.HTML 创建第一个HTML页面 写完html后如何测试 写在body中的常见标签有哪些? 注释快捷键 Ctrl+Shift+/ 1.文本相关标 ...
- 【转】医疗业务学习笔记--DICOM协议的基础内容!!!!!!!!!!
转自:医疗业务学习笔记--DICOM协议的基础内容 - 知乎 本文首发于"雨夜随笔"公众号,欢迎关注. DICOM协议是医疗领域对如何处理.存储.打印和传输医疗图片的一系列标准.D ...
- Nginx学习---Nginx的详解_【all】
1.1. Nginx简介 1.什么是nginx nginx:静态的,开源的www软件,可以解析静态的小文件(低于1M ),支持高并发占用较发少的资源(3W并发,10个进程,内存150M),跨平台 te ...
- 学习VR技术要学哪些内容?VR全景如何制作?
提起VR相当大家而言都不陌生,VR伴随着科技的发展,进入到人们的日常生活中,不少人都对VR技术很关注,不少公司或者企业也开始逐渐发展VR的技术,如果现在对VR技术能够有所了解的话,那么在后期便能够掌握 ...
最新文章
- python中index函数_python中index函数的用法
- MySQL COUNT函数优化及count(1)/count(*)/count(列名)的区别
- Linux网络编程一步一步学+基础
- Windows系统程序设计之结构化异常处理
- linux嵌入式开发箱跑马灯,跑马灯实验(STM32F4开发板)
- dibian+9+oracle+java_debian – 安装了Oracle Java,但在安装软件时,我得到了`你的Java版本不受支持....
- linux下用ntp对时
- Scratch 怪兽动画+骨骼矢量素材编程素材免费下载!
- ASP.Net中控件的EnableViewState属性 (转)
- Linux三剑客之SED
- 微信小程序圣诞帽_完成圣诞快乐Web应用程序界面
- shell脚本中执行ssh
- Ps怎么做火焰字 PS火焰字制作图文教程
- 期货基本面分析:,马来西亚10月1-10日棕榈油出口量较上月同期下降17.3%,但对中国出口创一年新高
- pem crt key文件区别
- 为何应用型本科(机器人工程等专业)大量学生选择考研
- com.google.guava maven依赖
- 远程桌面中goland软件不能使用键盘的历史后退和前进快捷键
- 关于互相帮忙投票的微信群、微信刷投票群、微信投票刷票群的详情介绍
- SELinux策略语言--类型强制(编写TE规则)
热门文章
- 思科模拟器-单臂路由实现vlan间的通信
- 突发!开源项目LayUI宣布下线 !
- C# 实现简易QQ界面
- latex error: does not look like a valid PDF document ; xdvipdfmx:fatal: Out of memory - asked for ..
- 《死侍2》片尾彩蛋催泪 瑞安·雷诺兹大秀中文
- 那些好老公做不出的事(三)
- redis 3 命令总结
- linux开发工程师前景_linux开发工程师待遇 和你想象中的有多少差距
- 华南虎事件带给我的思考
- Java Netty 教程