【Nginx】第一章 快速入门
第一章 快速入门
文章目录
- 第一章 快速入门
- 一、介绍
- 1.引入
- 2.什么是 Nginx
- 3.Nginx 作用
- 二、Windows 下使用
- 1.启动 Nginx
- 2.配置监听
- 3.关闭 nginx
- 三、Linux 下使用
- 1.安装 gcc
- 2.安装 PCRE pcre-devel
- 3.安装 zlib
- 4.安装 OpenSSL
- 5.下载 Linux 版的 Nginx 安装包
- 6.解压
- 7.配置
- 8.Nginx 常用命令
- 五、Nginx 配置文件结构
一、介绍
1.引入
公司项目刚刚上线的时候,并发量小,用户使用的少,所以在第并发的情况下,一个 jar 包启动应用就够了,然后内部 Tomcat 返回内容给用户
但是慢慢地,使用的用户越来越多,并发量开始增大,这时候一台服务器满足不了用户的需求
于是我们横向扩展,又增加了服务器,这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器,帮助我们转发和处理请求
我们希望这个服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望可以按照服务器的性能提供不同的权重选择。因此,我们使用了 Nginx
2.什么是 Nginx
Nginx(egine x)是一个高性能的 HTTP 和反向代理 WEB 服务器,同时也提供了 IMAP / POP3 / SMTP 服务。Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二大的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。2011 年 6 月 1 日,nginx 1.0.4 发布
其特点是占用内存少,开发能力强,事实上 Nginx 的并发能力在同类型的网页服务器中表现较好,中国大陆使用 Nginx 的用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有 12.18% 的使用比率,大约为 2200 万个网站
Nginx 是一个安装非常简单、配置文件非常简洁、Bug 非常少的服务。Nginx 启动特别容易,并且几乎可以做到 7 * 24 不间断运行,即使运行数个月也不需要重新启动。此外,还能够不间断服务的情况下进行软件版本的升级
Nginx 代码完全用 C 语言写成,官方数据测试表明能够支持高达 50,000 个并发连接数的响应
3.Nginx 作用
1、HTTP 代理,反向代理
作为 WEB 服务器最常用的功能之一,尤其是反向代理
正向代理
反向代理
2、提供两类负载均衡策略
内置策略:轮询策略、加权轮询策略、ip_hash 策略
扩展策略:url_hash 策略、fair 策略、sticky 策略
对于扩展策略是需要我们在安装时额外添加第三方模块才能实现的
轮询
配置
upstream backserver {server 192.168.0.14;server 192.168.0.15;
}
加权轮询
配置
upstream backserver {server 192.168.0.14 weight=10;server 192.168.0.15 weight=10;
}
ip_hash 策略
对客户端请求的 ip 进行 hash 操作,然后根据 hash 结果将同一个客户端 ip 的请求分发给同一台服务器进行处理,可以解决 session 不共享的问题
配置
upstream backserver {ip_hash;server 192.168.0.14:88;server 192.168.0.15:80;
}
- 动静分离
在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js 等),这些不需要经过后台处理的文件称为静态文件。Nginx 让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,提高资源响应速度
通过使用 Nginx 可以大大提高我们网站的响应速度,优化用户体验,让网站的健壮性更上一层楼
二、Windows 下使用
1.启动 Nginx
有两种方式:
- 直接双击 nginx.exe
- 打开 cmd 命令窗口,跳转到 nginx 目录下,输入命令 nginx.exe 回车
检查 nginx 是否启动成功
在浏览器地址栏输入 http://localhost:80,回车,出现 “Welcome to nginx!” 说明启动成功
2.配置监听
nginx 的配置文件是 conf 目录下的 nginx.conf,默认配置的监听端口为 80,如果端口被占用可以修改为未被占用的端口
当我们修改了 nginx 的配置文件 nginx 后,不需要关闭 nginx,只需要执行 nginx -s reload 即可让改动生效
3.关闭 nginx
- 打开 cmd 命令窗口,跳转到 nginx 目录下,输入命令 nginx -s stop(快速停止)或者 nginx -s quit(完整有序地停止)
- 打开 cmd 命令窗口,输入 taskill 命令 taskkill /f /t /im nginx.exe 回车
taskkill 是用来终止进程的
/f 强制终止
/t 终止指定的进程和任何由此启动的子进程
/im 指定进程名称
三、Linux 下使用
1.安装 gcc
安装 Nginx 需要先将官网下载的源码进行编译,依赖 gcc 环境,如果没有 gcc 环境,则需要安装
yum install gcc-c++
2.安装 PCRE pcre-devel
PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 Perl 兼容的正则表达式库。Nginx 的 HTTP 模块使用 PCRE 来解析正则表达式,所以需要在 Linux 上安装 PCRE 库,pcre-devel 是使用 PCRE 开发的一个二次开发库。Nginx 也需要此库
yum install -y pcre pcre-devel
3.安装 zlib
zlib 库提供了很多种压缩和解压缩的方式,Nginx 使用 zlib 对 HTTP 包的内容进行 gzip,所以需要在 Centos 上安装 zlib 库
yum install -y zlib zlib-devel
4.安装 OpenSSL
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。Nginx 不仅支持 HTTP 协议,还支持 HTTPS(即在 SSL 协议上传输 HTTP),所以需要在 Centos 安装 OpenSSL 库
yum install -y openssl openssl-devel
5.下载 Linux 版的 Nginx 安装包
下载完毕后上传到服务器上
6.解压
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
7.配置
使用默认配置,在 Nginx 根目录下执行
./configure
make
make install
查找安装路径
whereis nginx
8.Nginx 常用命令
cd /usr/local/nginx/sbin/
./nginx 启动
./nginx -s stop 停止
./nginx -s quit 安全退出
./nginx -s reload 重新加载配置文件
ps aux|grep nginx 查看 nginx 进程
五、Nginx 配置文件结构
... #全局块events { #events块...
}http #http块
{... #http全局块server #server块{ ... #server全局块location [PATTERN] #location块{...}location [PATTERN] {...}}server{...}... #http全局块
}
此外,还有一个比较重要的模块 upstream(上游服务器设置,主要为反向代理、负载均衡相关配置),upstream 的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡。在 Nginx 作为代理服务或负载服务时,它的配置位于 http 模块中,具体的处理使用将在匹配到的 location 中
实例:
user nobody; //运行用户
worker_processes 1; //启动 worker 进程数量,通常设置成和 cpu 的数量相等//全局错误日志及 PID 文件
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid; //设置进程的 pid 文件所在位置events{//工作模式:epoll 是多路复用 IO(I/O Mutiplexing)中的一种方式//仅用于 linux 2.6 以上内核,可以大大提高 nginx 的性能use epoll;//连接数上限:单个后台 worker process 进程的最大并发连接数worker_connections 1024;
}http{include mime.types; //Nginx 支持的媒体类型库文件(例如:text/html)//指定默认类型为二进制流,也就是当文件类型未定义时使用这种方式//例如在没有配置 PHP 环境时,Nginx 是不予解析的,此时,用浏览器访问 PHP 文件就会出现下载窗口default_type application/octet-stream;//设定日志格式log_format main '$remote_addr''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" ';access_log logs/access.log main;//sendfile 系统调用在两个文件描述符之间直接传递数据(完全在内核中操作)//从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝//对于普通应用,必须设为 on//如果用来进行下载应该用磁盘 IO 重负载应用,可设置为 off//以平衡磁盘与网络 I/O 处理速度,降低系统的 uptimesendfile on;#tcp_nopush on;//连接超时时间keepalive_timeout 65;tcp_nodelay on;#开启 gzip 压缩gzip on;gzip_disable "MSIE [1-6].";#设定请求缓冲client_header_buffer_size 128k;large_client_header_buffers 4 128k;//设定独立的虚拟主机站点server{#侦听 80 端口listen 80;#定义使用 www.nginx.cn 访问server_name www.nginx.cn;//定义服务器的默认网站根目录位置root html;#设定本虚拟主机的访问日志access_log logs/nginx.access.log main;//默认请求location / {root html;#定义首页索引文件的名称index index.php index.html index.html;}//静态文件,nginx 自己处理location ~^/(images|javascript|js|css|flash|media|static)/{#过期 30 天,静态文件不怎么更新,过期可以设大一点#如果频繁更新,则可以设置得小一点expires 30d;}
}
配置图片服务器实例:
#配置图片服务器#拦截域名:http://image.sisyphus.com:80#代理路径:C:\Users\admin\Desktop\imagesserver {listen 80;server_name image.sisyphus.com;location / {root C:/Users/admin/Desktop/images;}}
配置前端服务器实例:
#配置前端服务器 www.sisyphus.comserver {listen 80;server_name www.sisyphus.com;location / {#需要先将将前端 dist 文件夹拷贝至 nginx 安装目录root dist; index index.html;}}
定义 tomcat 集群
#定义 tomcat 集群#负载均衡策略:轮询upstream tomcats {server 127.0.0.1:8091;server 127.0.0.1:8092;}
配置后台服务器
#配置后台服务器 manage.jt.com 8091/8092server {listen 80;server_name manage.jt.com;location / {#代理的是一个请求路径proxy_pass http://tomcats;}}
【Nginx】第一章 快速入门相关推荐
- 【MyBatis-Plus】第一章 快速入门
第一章 快速入门 文章目录 第一章 快速入门 一.介绍 1.概述 2.特性 二.入门案例 1.安装插件 2.准备工作 3.MyBatis-Puls 替换 MyBatis 4.修改 StudentDao ...
- 【MyBatis】第一章 快速入门
第一章 快速入门 文章目录 第一章 快速入门 一.介绍 1.使用 JDBC 的缺陷 2.MyBatis 框架解决的主要问题 二.入门案例 1.准备数据库 2.创建实体类 3.创建持久层 DAO 接口 ...
- C++Primer 第一章 快速入门 学习
C++已经学习2年了,现在回头想巩固一下基础,就从C++primer第一章开始吧. 1.1 编写简单的C++程序 main函数是程序的入口函数. 编译与执行 GNU 编译环境 在GNU编译器下,需要输 ...
- Java 学习笔记:第一章 Java入门
Java 学习笔记:第一章 Java入门 1.1 计算机语言发展史以及未来方向 1.2 常见编程语言介绍 C语言 C++ 语言 Java语言 PHP 语言 Object-C和Swift 语言 Java ...
- 【N1BOOK】[第一章 web入门] wp
第一章 web入门]常见的搜集 wp [N1BOOK][第一章 web入门]常见的搜集 wp [N1BOOK][第一章 web入门]粗心的小李 wp [N1BOOK][第一章 web入门]afr_1 ...
- Android项目驱动式开发教程 第2版,《Android项目驱动式开发教程》第一章开发入门.ppt...
<Android项目驱动式开发教程>第一章开发入门 1.4 项目框架分析 4 android:versionName="1.0" > 5 8 第9行代码andro ...
- Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门
本章将涵盖以下话题: ž MyBatis是什么? ž 为什么选择MyBatis? ž MyBatis安装配置 ž 域模型样例 1.1 MyBatis是什么 MyBatis是一个简化和实现了Ja ...
- C++术语 【from C++ Primer 第1章 快速入门】
C++术语 [from C++ Primer 第1章 快速入门] argument(实参) 传递给被调用函数的值. block(块) 花括号括起来的语句序列. buffer(缓冲区) 一段用来存放数据 ...
- 第一章 程序设计入门--算法竞赛入门经典
第一章 程序设计入门–算法竞赛入门经典 知识点一: int m=25; printf("%d\n",m); printf("%03d\n",m); 输出如下: ...
最新文章
- python判断输入类型怎么做_如何检查输入类型?
- hive的数据定义之创建数据库和表
- 18.移动架构数据库升级解决方案
- Chrome 提标 您的浏览器限制了第三方Cookie...解决方法
- 程序员为什么不会修电脑?
- CPU方案简介 RK3308 - 智能音响
- Android应用中Back键的监听及处理
- 恕我直言,很多调参侠搞不清数据和模型谁更重要
- kafka手动调整分区副本数
- JAVA编程规则【转自java编程思想】
- mediarecorder直播html5,html5 pc端录制视频+MediaStreamRecorder
- 并发编程(4)同步并发操作
- WebBrowser提交submit后界面不刷新的解决办法
- MIUI刷第三方rec教程(回退系统)
- Scratch案例——画长城
- matlab符号运算转置出现conj的解决办法
- coreldraw2022(CDR 2022)中文新增更新内容介绍win/mac
- 为什么要远离色情信息(转载)
- 华为、拼多多上线新应用功能,多厂商蓝牙存在漏洞
- mapgis考试111