| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> linux 安装nginx,并配置反向代理,负载均衡 -> 正文阅读 |
|
[系统运维]linux 安装nginx,并配置反向代理,负载均衡 |
文章来源:https://www.gulixueyuan.com/my/course/332一、linux安装Nginx1.去nginx官网下载nginx压缩包,https://nginx.org 2.工具连接上linux 注意:在安装nginx之前,需要先安装上nginx的依赖包(各包的版本按情况而定)1) pcre-8.37.tar.gz 2)? ?openssl-1.0.1.tar.gz 3)? ?zlib-1.2.8.tar.gz 4)? ?nginx-1.11.1.tar.gz 当然,安装nginx依赖可以有两种方式安装:一种是通过wget方式下载依赖包解压安装,一种是yum安装 3.综合运用来安装: 3.1.安装pcre, linux :? ?cd /usr/src?? ?下载到pcre压缩包, 解压: tar -xvf pcre-8.37.tar.gz 解压后,进入pcre-8.37 目录:cd?pcre-8.37 然后执行:? ./configure? ?(检查编译环境) 然后执行: make && make install (编译安装)? ? ? pcre-config --version 检查pcre版本号 所以在linux上安装压缩包的步骤是:下载安装包-》解压安装包-》进入解压文件目录-》执行configure-》编译安装 3.2.用yum直接下载并安装openssl、zlib ?3.3.nginx安装,把nginx压缩包放入linux, /usr/src 目录下 与pcre安装一样,解压、进入解压的目录、执行./configure检查,执行 make&make install 注意:nginx安装完毕后,我们进入 /usr/local目录下可以看到有一个nginx目录,在 /usr/local/nginx/sbin 目录下可以启动nginx(命令:? ./nginx) ,启动后,可通过 ps -ef | grep nginx 查看nginx进程,有进程则开启了nginx 在/usr/local/nginx/conf/ 可以看到有nginx的配置文件:? 主配置文件 nginx.conf? 3.4nginx安装完后,一般我们linux防火墙是默认禁止访问80端口的, 可以通过命令查看开放的端口号: firewall-cmd --list-all 设置开放的端口号:sudo firewall-cmd --add-port=8080/tcp --permanent 设置开启http服务: firewall-cmd --add-service=http --permanent 更改设置后需要重启防火墙: firewall-cmd --reload 二、nginx操作常用命令1.启动nginx命令:cd /usr/local/nginx/sbin目录下? ? 执行 ./nginx? 启动 2.查看nginx版本:还是在sbin目录下? 执行? ./nginx -v?? 3.通过查看nginx进程来确认nginx是否已经启动:? ps -ef | grep nginx 4.关闭nginx命令:还是在sbin目录下 执行? ?./nginx -s stop 5.重新加载nginx:还是在sbin目录下 执行? ?./nginx -s reload 注意:nginx重新加载作用,因为我们修改了nginx配置文件后,当前运行的进程中用的还是我们之前的配置,如果要用到修改后的配置又不影响nginx运行,那么就执行重新加载命令 三、nginx配置文件1.nginx配置文件位置: /usr/local/nginx/conf/nginx.conf 2.nginx配置文件内部组成:三部分--全局块、events块、http块 1)全局块:从配置文件开头到events块之间的内容是全局块,主要是用于设置一些影响nginx服务器整体运行的配置指令: 如开启工作进程数: worker_processes 1;(与处理并发有关,当然开启的进程数不是越多越好,要根据cup核数来确定) 2)events块:此块涉及的指令主要是影响nginx服务器与用户的网络连接有关,开启的工作进程下能同时允许同时接收多个网络连接,worker_connections 1024; (最大用户连接数为1024个) 3)http块:是我们配置nginx使用最频繁的块,http块内部又分为: http全局块、server块 3.1http全局块:http全局块配置的指令包括文件引入、MIME-TYPE定义(mime类型定义)、日志自定义、连接超时时间、单连接请求数上限等 3.2server块:这块和虚拟机关系密切,虚拟机即从用户角度看,和一台独立的硬件主机是完全一样的,该技术产生是为了节省互联网服务器成本,每个http块可以包括多个server块,每个server块就相当于一个虚拟主机,而每个server块下又分为 server全局块和多个location块 4.1全局server块:最常见的配置是本虚拟主机的监听配置和本虚拟主机的名称、ip配置 4.2location块:一个server块可以有多个location块,这块的主要作用是基于nginx服务器接收到的请求字符串有关(例如:server_name/uri-string),对虚拟主机名称(也可以是ip别名)之外的字符串进行匹配、对特定的请求进行处理,地址定向,数据缓存和应用控制等功能,还有许多第三方模块的配置也在这里进行。 四、配置反向代理1.准备工作(安装内部虚拟服务器,开放8080端口,本地映射网站 域名-地址) ? 反向代理请求示意图:用户请求网站,网站的代理服务器接收到请求,转发给网站的某台应用服进行处理,返回结果再转发给用户端 ?注意:其中客户端访问的 www.123.com,我们win本地可以在host文件中进行配置? ?注意:我们一般在浏览器中输入网址,那么请求会先去本host检查有没有 域名对应的ip映射,如果有则直接取这个ip发请求,如果没有则去外部DNS解析获取ip,然后发请求访问目标站的服务器 2.配置nginx反向代理1 nginx配置文件位置:/usr/local/nginx/conf/nginx.conf vim打开:配置如下图 ? 配置的意思是:客户端请求服务器 192.168.17.129:80,? ?然后location进行转发至:配置的tomcat虚拟服务器 127.0.0.1:8080,可以注意到,反向代理转发时可以改变端口号,当然,数据返回时,报文数据会被nginx修改再转发给客户端 3.配置nginx反向代理2 实现效果:使用nginx反向代理,根据访问的路径跳转到不同端口的服务中,nginx监听端口为9001 访问 http://127.0.0.1:9001/edu/? ?直接跳转到 127.0.0.1:8080 访问 http://127.0.0.1:9001/vod/? ?直接跳转到 127.0.0.1:8081 准备两个tomcat服务器,一个8080端口,一个8081端口,并创建文件夹和测试页面 打开配置文件:vim /usr/local/nginx/conf/nginx.conf 在http块中,再添加一个server块,因为之前的server块是监听80端口的,现在这个server块需要监听9001端口。那也就是说不同的server块可以监听不同的端口请求。 ? ? ?需要记得:使用新的端口号,那么就需要防火墙开启端口,以免端口被墙无法访问。 ?另外需要说明一下:location ~ /edv/? 中的? “~ /edv/”其实就是路由的正则配置、 location [ =? | ~ | ~* | ^~] uri {? ? } 1) = :用于不含正则表达式的rul前,要求字符串与uri严格匹配,如果匹配就停止向下搜索并立即处理该请求。 2) ~:用于表示uri包含正则表达式,并且区分大小写 3) ~*:用于表示uri包含正则表达式,并且不区分大小写 4) ^~ : 用于不含正则表达式的uri前,要求nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。 注意:如果uri包含正则表达式,必须有 ~? 或者 ~* 标识 五、配置nginx负载均衡1.准备工作(反向代理服务器下配置两台相同的应用服务器,访问同一个资源(相同路径)时,代理服务器,通过不同的规则分发给应用服务器去处理请求,达到将大量请求压力分散到多台服务器来处理的目的)? 2.配置nginx配置文件 ?需要说明一下:upstream myserver是定义一组服务器,服务器组名为 myserver,ip_hash是指这组服务器的分发规则,即按什么规则来将请求分配到这些服务器处理。server 115.28.63:8080 weight=1;? ?添加一个应用服务器,weight表示权重,权重值越高,表示被分配任务的次数要高yidian。 访问效果如下:多次请求,负载均衡会切换不同应用服处理 ?3.nginx负载均衡分发规则: ?1)默认规则:轮询--逐个轮流分配请求,如果其中有一台宕机,那么就会自动剔除掉这台服务器。 2)权重--weight,默认是1 ,权重值越高表示被分配的请求越多 3)ip_hash: 按访问ip的hash结果分配,也就意味着一个客户端,永远只会被分配到固定的一台应用服上(可以解决session共享的问题),但是这种方式要命的是,如果某台应用服宕机了,那么nginx不会剔除这台服务器,那就意味着某一部分客户端就访问一直失败了。 ?4)fiar--第三方规则,按应用服响应时间来分配请求,响应时间短的优先分配 ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 16:35:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |