Nginx教程(一)-全面认知
什么是 nginx
nginx 是一款高性能的 http 服务器,反向代理服务器,电子邮件(IMAP/POP3)代理服务器;
它的特点就是高性能,占用内存少,支持高并发,运行稳定;
官方测试 可支持 5万 的并发量;
nginx 的用途
nginx 可以用于多种场景,最常用的是反向代理,其他场景也需要反向代理实现
http 服务器:nginx 是一个 http 服务器,可以独立提供 http 服务,可以做 web 静态资源服务器
正向代理:客户端代理
反向代理:反向代理是它最重要,也是最常用的一个场景
负载均衡:把多个请求近似平均的分配到多个服务器上
// 也就是说负载均衡需要多个服务器 【一个服务器多个端口应该也行,我没试过,使用时请自行测试】
// 负载均衡的本质其实也是反向代理
动静分离:把 web 静态资源和动态资源放在不同的服务器上,然后加上反向代理
配置高可用集群:组件分布式 nginx,防止 单 nginx 宕机导致 web 服务挂掉
功能框架
常规 web 框架
我们先看下常规 web 服务的 请求响应 过程,加入后台需要操作数据库,如下图

开发环境的 web 服务器是单线程的,多个请求必须排队
反向代理
nginx 作为反向代理,隐藏真实 IP,在 windows 上配置 域名-ip 解析器,使用域名通过 代理(nginx) 访问 真实服务(tomcat)

负载均衡
把 多个 request 平均分配到 多个 服务器上,避免单服务器的排队,提高并发

动静分离
把 web 动态资源和静态资源 分开存储

安装
nginx 安装有多种方式,详细过程 参照 官方安装文档,这里只简单介绍 tar 包安装。
nginx 需要安装依赖
//一键安装四个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
下载 tar 包并解压,下载地址 官网下载,进入目录,执行如下命令
./configure
make
make install
解压后如下图

简单配置
nginx 默认 80 端口,这个端口一般被 apache 占用,默认 IP一般是 localhost,由于我们经常会搞一些其他事情把 hostname 改掉,所以这里先换成 IP
server {
listen 8765;
server_name localhost;
启动并查看版本
[root@node conf]# /usr/local/nginx/sbin/nginx
[root@node conf]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.16.1
/usr/local/nginx/sbin 就是上图那个解压后的 sbin
可以看到安装成功
web 端可访问

常用命令
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 的版本,编译器版本和配置参数。
nginx 启动
详细配置
配置文件解读
1 worker_processes 1; #worker进程的数量
2 events { #事件区块开始
3 worker_connections 1024; #每个work进程支持的最大连接数
4 } #事件区块结束
5 http { #http区块开始
6 include mime.types; #nginx支持的媒体类型库文件包含
7 default_type application/octet-stream; #默认的媒体类型
8 sendfile on; #开启高效传输模式
9 keepalive_timeout 65; #连接超时
10 server { #第一个server区块开始,表示一个独立的虚拟主机站点
11 listen 80; #提供服务的端口,默认80
12 server_name localhost; #提供服务的域名主机名
13 location / { #第一个location区块开始
14 root html; #站点的根目录,相对于nginx安装目录
15 index index.html index.htm;
16 }
17 error_page 500 502 503 504 /50x.html;
18 location = /50x.html {
19 root html;
20 }
21 }
22 }
反向代理配置
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host:$server_port;
}
}
上面是 反向代理的 IP:PORT,下面是被代理的 服务, / 对应 url, 当访问 localhost:80 时,相当于访问 localhost:8080
负载均衡配置
负载均衡需要分配 request 到不同服务器,那如何分配呢?有几种策略
RR 策略
nginx 的默认策略,按时间顺序把请求逐个分配到不同服务器,如果某个服务器挂掉,会自动剔除。
upstream test {
server localhost:8080;
server localhost:8081;
}
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://test;
proxy_set_header Host $host:$server_port;
}
}
upstream 代表多个服务器,假如有个服务器挂掉了,nginx 会自动判断,不给他分配 request,所以不影响 web 的使用。
注意 upstream 后面的 test 与 http 后面的要保持一致
权重策略
给每台服务器分配权重,权重大的越容易被分配 request,性能好的机器自然权重大,这种策略就是用于 服务器性能 差异较大的场景。
upstream test {
server localhost:8080 weight=9;
server localhost:8081 weight=1;
}
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://test;
proxy_set_header Host $host:$server_port;
}
}
比如有 10 个 request,可能 8080 处理 9 个,8081 处理 1 个
还有 ip_hash 策略,包括上面两种是 nginx 自带的策略;
还有第三方策略 fair 策略、url_hash 策略,具体配置我就不写了,大同小异,参考 各种策略的详细配置
参考资料:
http://www.nginx.cn/doc/index.html Nginx中文文档
https://blog.csdn.net/weixin_41835612/article/details/83738188 有具体配置
https://www.cnblogs.com/xiaohuochai/p/9093819.html 有具体配置
https://www.jianshu.com/p/15e7f2adb463 有具体配置
https://www.jianshu.com/p/15e7f2adb463 有具体配置
https://www.cnblogs.com/ysocean/p/9392908.html 理论挺详细
https://blog.csdn.net/duguyuyun12345/article/details/83471821 Nginx使用教程
Nginx教程(一)-全面认知的更多相关文章
- Nginx教程(四) Location配置与ReWrite语法
Nginx教程(四) Location配置与ReWrite语法 1 Location语法规则 1.1 Location规则 语法规则: location [=|~|~*|^~] /uri/ {- } ...
- Nginx教程(三) Nginx日志管理
Nginx教程(三) Nginx日志管理 1 日志管理 1.1 Nginx日志描述 通过访问日志,你可以得到用户地域来源.跳转来源.使用终端.某个URL访问量等相关信息:通过错误日志,你可以得到系统某 ...
- Nginx教程(二) Nginx虚拟主机配置
Nginx教程(二) Nginx虚拟主机配置 1 虚拟主机管理 1.1 Nginx管理虚拟主机 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主 ...
- Nginx教程(一) Nginx入门教程
Nginx教程(一) Nginx入门教程 1 Nginx入门教程 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行.由 ...
- Nginx 教程(1):基本概念
简介 嗨!分享就是关心!所以,我们愿意再跟你分享一点点知识.我们准备了这个划分为三节的<Nginx教程>.如果你对 Nginx 已经有所了解,或者你希望了解更多,这个教程将会对你非常有帮助 ...
- Nginx教程
Nginx教程 1.背景 介绍 Nginx是一个高性能的HTTP服务器,以及反向代理服务器 组成 Ngnix有内核和模块组成.微结构的内核根据配置文件将一个请求映射到一个location块中,该loc ...
- nginx教程从入门到精通
[转]nginx教程从入门到精通 nginx教程写了一段时间,无意中发现,nginx相关文章已经达到了近100篇了.觉得很有必要汇总到一起,它是我们运维生存时间的一片心血,他是学习nginx的同学必看 ...
- Nginx教程收集
学习要系统,最推荐的方式是看书. 下面是收集的一些Nginx教程: https://www.gitbook.com/book/yinsigan/nginx/details http://www.ngi ...
- agentzh 的 Nginx 教程(版本 2019.07.31)
agentzh 的 Nginx 教程(版本 2019.07.31) agentzh 的 Nginx 教程(版本 2019.07.31) https://openresty.org/download/a ...
随机推荐
- [LibreOJ 3119]【CTS2019】随机立方体【计数】【容斥】
Description Solution 记\(N=min(n,m,l)\) 首先考虑容斥,记\(f(i)\)为至少有i个位置是极大的,显然极大的位置数上界是N. 那么显然\(Ans=\sum\lim ...
- [HG]小G坐电梯 题解
C 小G坐电梯 题目描述 小G来到了著名的某大厦.大厦一共有n层,初始的时候小G在第 A 层. 小G特别想去B层小 M 的办公室看一看,然而因为安保原因,B层已经被封锁无法进入. 但是小G既然来了,就 ...
- AcWing:106. 动态中位数(对顶堆)
依次读入一个整数序列,每当已经读入的整数个数为奇数时,输出已读入的整数构成的序列的中位数. 输入格式 第一行输入一个整数PP,代表后面数据集的个数,接下来若干行输入各个数据集. 每个数据集的第一行首先 ...
- windows基础提权
Window基础提权 提到system权限 甚至让他变成你的肉鸡 我们了解一下windows下面有那些用户 Guests是用户最低的权限 而且一般是被禁用的 User权限也很低 连关机都不行 还有wi ...
- [JZOJ5398]:Adore(状压DP+记忆化搜索)
题目描述 小$w$偶然间见到了一个$DAG$. 这个$DAG$有$m$层,第一层只有一个源点,最后一层只有一个汇点,剩下的每一层都有$k$个节点. 现在小$w$每次可以取反第$i(1<i< ...
- git 更改远程仓库地址,强行推送远程仓库
强行推送远程仓库 #把一个现有的工程拷贝一份 #去掉远程仓库关联 git remote rm origin #添加远程仓库关联 git remote add origin http://xxx.git ...
- 第八周学习总结&实验报告(6)
实验六 异常 一.实验目的: (1)理解异常的基本概念: (2)掌握异常处理方法及熟悉常见异常的捕获方法. 二.实验要求: (1)练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使 ...
- c++匿名函数精简写法
main.cpp: #include<stdio.h> #include<functional> #include<unistd.h> std::function& ...
- 最长不重复子串长度,时间复杂度O(n),空间复杂度O(n),Python实现
def lengthOfLongestSubstring(s): res = 0 d = {} tmp = 0 start = 0 for i in range(len(s)): if s[i] in ...
- Php mysql 常用代码、CURD操作以及简单查询
C/S:Client ServerB/S:Brower Server php主要实现B/S LAMP :Linux系统 A阿帕奇服务器 Mysql数据库 Php语言 mysql常用代码 ...