网站开发加33865401,绥化做网站,谷歌推广怎么样,业务外包Nginx概念
Nginx 是一个高性能的 HTTP 和反向代理服务。其特点是占有内存少#xff0c;并发能力强#xff0c;事实上nginx的并发能力在同类型的网页服务器中表现较好。
Nginx 专为性能优化而开发#xff0c;性能是其最重要的考量指标#xff0c;实现上非常注重效率#…Nginx概念
Nginx 是一个高性能的 HTTP 和反向代理服务。其特点是占有内存少并发能力强事实上nginx的并发能力在同类型的网页服务器中表现较好。
Nginx 专为性能优化而开发性能是其最重要的考量指标实现上非常注重效率能经受住高负载的考验有报告表明能支持高达50000个并发连接数。
在连接高并发的情况下Nginx 是 Apache 服务不错的替代品Nginx 在美国是做虚拟主机生意的老板们经常选择的软件平台之一。
反向代理
在说反向代理之前先来说说什么是代理和正向代理。
代理
代理其实就是一个中介A和B本来可以直连中间插入一个CC就是中介。刚开始的时候代理多数是帮助内网client局域网访问外网server用的。 后来出现了反向代理反向这个词在这儿的意思其实是指方向相反即代理将来自外网客户端的请求转发到内网服务器从外到内。
正向代理 正向代理即是客户端代理代理客户端服务端不知道实际发起请求的客户端。 正向代理类似一个跳板机代理访问外部资源。
比如我们国内访问谷歌直接访问访问不到我们可以通过一个正向代理服务器请求发到代理服服务上代理服务器能够访问谷歌这样由代理去访问谷歌取到返回数据再返回给我们这样我们就能访问谷歌了。 反向代理 反向代理即是服务端代理代理服务端客户端不知道实际提供服务的服务端。 客户端是感知不到代理服务器的存在。
是指以代理服务器来接受 Internet 上的连接请求然后将请求转发给内部网络上的服务器并将从服务器上得到的结果返回给 Internet 上请求连接的客户端此时代理服务器对外就表现为一个反向代理服务器。 负载均衡
关于负载均衡先来举个例子 地铁大家应该都坐过吧我们一般在早高峰乘地铁时候总有那么一个地铁口人最拥挤这时候一般会有个地铁工作人员A拿个大喇叭在喊“着急的人员请走B口B口人少车空”。而这个地铁工作人员A就是负责负载均衡的。 为了提升网站的各方面能力我们一般会把多台机器组成一个集群对外提供服务。然而我们的网站对外提供的访问入口都是一个的比如www.taobao.com。那么当用户在浏览器输入www.taobao.com的时候如何将用户的请求分发到集群中不同的机器上呢这就是负载均衡在做的事情。 负载均衡Load Balance意思是将负载工作任务访问请求进行平衡、分摊到多个操作单元服务器组件上进行执行。是解决高性能单点故障高可用扩展性水平伸缩的终极解决方案。 Nginx提供的负载均衡主要有三种方式轮询加权轮询Ip hash。 轮询
nginx默认就是轮询其权重都默认为1服务器处理请求的顺序ABCABCABCABC…
upstream mysvr { server 192.168.8.1:7070; server 192.168.8.2:7071;server 192.168.8.3:7072;
}加权轮询
根据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置则默认为1。下面服务器的请求顺序为ABBCCCABBCCC…
upstream mysvr { server 192.168.8.1:7070 weight1; server 192.168.8.2:7071 weight2;server 192.168.8.3:7072 weight3;
}ip_hash
iphash对客户端请求的ip进行hash操作然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理可以解决session不共享的问题。
upstream mysvr { server 192.168.8.1:7070; server 192.168.8.2:7071;server 192.168.8.3:7072;ip_hash;
}动静分离
动态与静态页面区别
静态资源 当用户多次访问这个资源资源的源代码永远不会改变的资源如HTMLJavaScriptCSSimg等文件。动态资源当用户多次访问这个资源资源的源代码可能会发送改变如.jsp、servlet 等。
什么是动静分离 动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来动静资源做好了拆分以后我们就可以根据静态资源的特点将其做缓存操作这就是网站静态化处理的核心思路。 动静分离简单的概括是动态文件与静态文件的分离。
为什么要用动静分离
为了加快网站的解析速度可以把动态资源和静态资源用不同的服务器来解析加快解析速度。降低单个服务器的压力。 Nginx安装
windows下安装
1、下载nginx
nginx.org/en/download… 下载稳定版本。以nginx/Windows-1.20.1为例直接下载 nginx-1.20.1.zip。 下载后解压解压后如下 2、启动nginx 直接双击nginx.exe双击后一个黑色的弹窗一闪而过 打开cmd命令窗口切换到nginx解压目录下输入命令 nginx.exe 回车即可
3、检查nginx是否启动成功
直接在浏览器地址栏输入网址 http://localhost:80 回车出现以下页面说明启动成功 Docker安装nginx
我之前的文章也讲过Linux下安装的步骤我采用的是docker安装的很简单。
1、查看所有本地的主机上的镜像使用命令docker images 2、创建 nginx 容器 并启动容器使用命令docker run -d --name nginx01 -p 3344:80 nginx 3、查看已启动的容器使用命令docker ps
[图片上传失败…(image-af849a-1631168446877)]
浏览器访问服务器ip:3344如下说明安装启动成功。
注意如何连接不上检查阿里云安全组是否开放端口或者服务器防火墙是否开放端口 linux下安装
1、安装gcc
安装 nginx 需要先将官网下载的源码进行编译编译依赖 gcc 环境如果没有 gcc 环境则需要安装
yum install gcc-c2、PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式所以需要在 linux 上安装 pcre 库pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令
yum install -y pcre pcre-devel3、zlib 安装
zlib 库提供了很多种压缩和解压缩的方式 nginx 使用 zlib 对 http 包的内容进行 gzip 所以需要在 Centos 上安装 zlib 库。
yum install -y zlib zlib-devel4、OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议并提供丰富的应用程序供测试或其它目的使用。 nginx 不仅支持 http 协议还支持 https即在ssl协议上传输http所以需要在 Centos 安装 OpenSSL 库。
yum install -y openssl openssl-devel5、下载安装包
手动下载.tar.gz安装包地址nginx.org/en/download… 下载完毕上传到服务器上 /root
6、解压
tar -zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1 7、配置
使用默认配置在nginx根目录下执行
./configue
make
make install查找安装路径 whereis nginx 8、启动 nginx
./nginx启动成功访问页面ip:80 Nginx常用命令
注意使用Nginx操作命令前提必须进入到Nginx目录 /usr/local/nginx/sbin
1、查看Nginx版本号./nginx -v 2、启动 Nginx./nginx 3、停止 Nginx./nginx -s stop 或者./nginx -s quit 4、重新加载配置文件./nginx -s reload 5、查看nginx进程ps -ef|grep nginx Nginx配置文件
Nginx配置文件的位置/usr/local/nginx/conf/nginx.conf Nginx配置文件有3部分组成 1、全局块
从配置文件开始到 events 块之间的内容主要会设置一些影响 nginx 服务器整体运行的配置指令比如worker_processes 1。
这是 Nginx 服务器并发处理服务的关键配置worker_processes 值越大可以支持的并发处理量也越多但是会受到硬件、软件等设备的制约。一般设置值和CPU核心数一致。
2、events块
events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接比如worker_connections 1024
表示每个 work process 支持的最大连接数为 1024这部分的配置对 Nginx 的性能影响较大在实际中应该灵活配置。
3、http块
http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;#监听端口server_name localhost;#域名location / {root html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location /50x.html {root html;}}}这算是 Nginx 服务器配置中最频繁的部分。
演示示例
反向代理/负载均衡 我们在windows下演示首先我们创建两个springboot项目端口是9001和9002如下 我们要做的就是将localhost:80代理localhost:9001和localhost:9002这两个服务并且让轮询访问这两个服务。
nginx配置如下
worker_processes 1;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;upstream jiangwang {server 127.0.0.1:9001 weight1;//轮询其权重都默认为1server 127.0.0.1:9002 weight1;}server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {root html;index index.html index.htm;proxy_pass http://jiangwang;}}}我们先将项目打成jar包然后命令行启动项目然后在浏览器上访问localhost来访问这两个项目我也在项目中打印了日志操作一下来看看结果是不是两个项目轮询被访问。 可以看到访问localhost这两个项目轮询被访问。
接下来我们将权重改为如下设置
upstream jiangwang {server 127.0.0.1:9001 weight1;server 127.0.0.1:9002 weight3;
}重新加载一个nginx的配置文件nginx -s reload
加载完毕我们再访问其localhost观察其访问的比例 结果显示9002端口的访问次数与9001访问的次数基本上是3:1。
动静分离
1、将静态资源放入本地新建的文件里面例如在D盘新建一个文件data然后再data文件夹里面在新建两个文件夹一个img文件夹存放图片一个html文件夹存放html文件如下图 2、在html文件夹里面新建一个a.html文件内容如下
!DOCTYPE html
html
head
meta charsetutf-8
titleHtml文件/title
/head
bodypHello World/p
/body
/html3、在img文件夹里面放入一张照片如下 4、配置nginx中nginx.conf文件
location /html/ {root D:/data/;index index.html index.htm;
}location /img/ {root D:/data/;autoindex on;#表示列出当前文件夹中的所有内容
}5、启动nginx访问其文件路径在浏览器输入http://localhost/html/a.html如下 6、在浏览器输入http://localhost/img/ Nginx工作原理
materworker master接收信号后将任务分配给worker进行执行worker可有多个。 worker如何工作
客户端发送一个请求到master后worker获取任务的机制不是直接分配也不是轮询而是一种争抢的机制“抢”到任务后再执行任务即选择目标服务器tomcat等然后返回结果。 worker_connection
普通的静态访问最大并发数是worker_connections * worker_processes/ 2 若是 HTTP 作为反向代理来说最大并发数量应该是 worker_connections * worker_processes/ 4 因为作为反向代理服务器每个并发会建立与客户端的连接和后端服务器的连接会占用两个连接。
当然了worker数也不是越多越好worker数和服务器的CPU数相等时最适宜的。
优点
可以使用 nginx –s reload 热部署利用 nginx 进行热部署操作每个 woker 是独立的进程若其中一个woker出现问题其他继续进行争抢实现请求过程不会造成服务中断。
总结
关于 Nginx 的基本概念、安装教程、配置、使用实例以及工作原理本文都做了详细阐述。希望本文对你有所帮助。