微服务nginx解析部署使用全流程

news2024/11/20 16:27:45

目录

1、nginx介绍

1、简介

2、反向代理

3、负载均衡

2、安装nginx

1、下载nginx

2、解压nginx安装包

3、安装nginx​编辑

1、执行configure命令

2、执行make命令

4、启动nginx

1、查找nginx位置并启动

2、常用命令

3、反向代理

1、介绍反向代理配置

1、基础配置

2、详细介绍location指令

2、反向代理配置案例二则

4、负载均衡

1、配置hello集群

2、nginx负载均衡


1、nginx介绍

1、简介

【Nginx是个好东西,没有它的话,这前端开发完了后(非vue开发),还得找一个web容器 大概率是tomcat。咱就需要配置tomcat ,tomcat的配置是比较麻烦的, nginx的配置就简单了好多。】

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 ,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。 其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

俄罗斯:俄罗斯有名的是数学家,黑客(俄罗斯,伊朗,朝鲜)

web服务器:

2、反向代理

【你访问A,然后我帮你把你的请求给你转到B。 你访问百度,然后我帮你把地址转到谷歌上。----感觉有点多此一举哈,为啥不直接访问谷歌,要通过反向代理来做 ?】

【比如我可以通过百度去搜索谷歌,还可以通过360去搜索谷歌,也可以通过搜狗搜索谷歌。这样用户的入口就变得多了,虽然目标服务器是同一个,但是都在消耗各自代理服务器的资源。就是nginx自己的资源。而且这样做还有个好处,我在这有一个统一的入口,这个入口是通过nginx进的,后面真正的资源服务器用户是不知道的,这样就比较安全。(减少黑客的直接攻击)】

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

3、负载均衡

(Nginx能做负载均衡,但是并不是主力军。)

【负载:就是这个服务器压力有多大;

均衡:就是把这份压力平坦下去,把它分给多个服务器,这样原本是给一台服务器上的压力,现在分给多台服务器了】

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

2、安装nginx

基于centOS 7.x安装。

其实也可以安装在docker上,但是docker有个天然的劣势就是对于文件的管理不是很优秀,而nginx刚好需要做文件替换,文件下载这些操作;第二个原因就是装nginx这台服务器,基本上只安装nginx,不安装别的软件,所以没有必要安装docker。

1、下载nginx

http://nginx.org/en/download.html

2、解压nginx安装包

上传文件到 /usr/local/nginx 里,然后解压。

要进入到当前目录下

tar -zxvf nginx-1.22.1.tar.gz

3、安装nginx

1、执行configure命令

./configure

这个命令是用来检查本地环境是否可以安装nginx,缺少哪些环境会给出提示。并生成MakeFile文件,用于安装。

执行后多会输出没有C编译环境,安装一下C环境即可。

 C compiler cc is not found

【解决办法,下面这些命令一个一个执行可以,一堆一起执行也可以】

yum install -y openssl*

yum install -y ncurses-devel

yum install -y make zlib-devel gcc c++ libtool openssl openssl-devel


./configure

==上面安装命令都安装完了后,在执行一下 ./configure,就跟刚才不一样了。

2、执行make命令

执行完上面的三个命令之后,查看一下是否生成了MakeFile文件,生成后执行如下编译安装命令:

make install 

make install命令执行后开始安装nginx,输出如下图代表安装完成。

4、启动nginx

1、查找nginx位置并启动

whereis nginx

conf:配置文件

html:页面文件

logs:日志文件

sbin:可执行文件

2、常用命令

# 启动nginx
./nginx

# 停止nginx
./nginx -s stop

# 重新加载配置文件
./nginx -s reload

# 查看nginx进程
ps aux|grep nginx

【启动nginx:】

【查看nginx进程:】

启动成功后,在宿主机访问nginx,nginx的端口号默认配置是80。

3、反向代理

作用:

  • 通过反向代理可以增加安全性,减少后台服务被攻击的隐患

  • 通过缓存的方式可以增加静态资源响应效率

  • 通过反向代理实现负载均衡

1、介绍反向代理配置

配置文件在conf目录下的nginx.config文件中。

1、基础配置

介绍nginx.conf配置文件内容:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server { #--只需要关注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;
        }
    } #--只需要关注server的配置--
}

listen:监听哪个端口

server_name:给这个服务取一个名字

location:反向代理的配置

error_page:错页面

root:静态资源的根目录

index:欢迎页,默认的请求页面

2、详细介绍location指令

做反向代理映射地址的

location [ = | ~ | ~* ] uri {
​
}

=:精确匹配,请求地址必须和uri相同才会进入这个location

~:模糊匹配,只要符合uri规则就会进入了这个location

~*:不区分大小写的模糊匹配

2、反向代理配置案例二则

【实现nginx代理百度】

    server {
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass  http://www.baidu.com;
        }
    }

修改完配置文件后,要重新加载一下配置文件

# 重新加载配置文件

./nginx -s reload

【结果是:访问nginx,显示的是百度。】

【实现nginx代理tomcat】

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass http://192.168.1.173:8080;
        }
    }
}

proxy_pass:反向代理的地址。这个配置的地址最后可以用“/”结尾的,也可以不用“/”结尾,有很大区别。

区别:

有正斜杠代理时会代理到根目录,举例说明:

创建一个html页面:

粘贴到tomcat/webapps/abc文件夹里去:

访问一下123.html页面。

修改一下配置文件:

worker_processes  1;

events {
    worker_connections  1024;
}

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;
        }
        
        location /abc {##意思是说,只有访问/abc的时候,再给我代理到tomcat上;没访问/abc,访问别的 别给我代理tomcat。
            proxy_pass http://192.168.1.173:8080/;
        }
    }
}

修改完配置文件后,要重新加载一下配置文件

./nginx -s reload

请求地址:http://192.168.1.173/abc/123.html

没有正斜杠时,代理后的地址是http://192.168.1.173:8080/abc/123.html

proxy_pass http://192.168.1.173:8080;

有正斜杠时,代理后的地址是http://192.168.1.173//123.html,由此会导致404问题

proxy_pass http://192.168.1.173:8080/;

在实际工作中,两种都有可能用到,注意区别。

4、负载均衡

1、配置hello集群

创建一个【java项目】的springboot工程:(多个项目)

构建集群

清空下载

提取出来保存cmd启动

项目进行启动

进入存储当前项目jar包下

浏览器输入localhost:项目端口号/一级路由/二级路由

将上面的jar包项目拉取到Linux里

Linux里创建目录

进入当前目录下

2、nginx负载均衡

修改/usr/local/nginx/conf下ngint.conf文件

upstream:负载均衡配置,内部可以配多个server

proxy_pass:代理到hw这个负载均衡配置

修改完配置文件后,要重新加载一下配置文件

# 重新加载配置文件
./nginx -s reload

nginx的负载均衡支持多种模式,最常见的是以下三种:

  • 轮询:平均分配,逐一做负载,是默认的方式

  • 权重:可以设置一个权重值,让某一个服务被分配做负载的比例增大

    【访问的时候,显示88 端口1次,99端口两次】(不够智能)

        upstream hw {
            server 192.168.1.173:88 weight=1;
            server 192.168.1.173:99 weight=2;
    }

ip_hash:对发送请求过来的ip地址进行hash计算,得到值会分配给upstream中配置的服务,且相同的ip访问计算的结果相同,就会被分配到同一个服务中。【这样做的好处是,实现session共享的问题,可以保证同一个ip地址不会被负载均衡到其他项目里,而导致拿不到session。】

    upstream hw {
            ip_hash;
            server 192.168.1.173:88;
            server 192.168.1.173:99;
        }

同一个IP,无论访问多少次,都是显示同一个内容。(不够智能)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2185711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

渗透测试入门学习——编写python脚本实现对网站登录页面的暴力破解

进入靶场输入任意密码进行尝试 发现登陆失败的特征字:“Username and/or password incorrect” 推荐用谷歌浏览器,按F12继续查看请求地址、请求头参数等详细信息,着重关注是否需要Cookie 编写python脚本 import requests # 填入请求地址 u…

Pikachu-csrf-CSRF(POST)

发起请求 拦截抓包&#xff0c;在请求信息中&#xff0c; Engagement Tool --》generate CSRF PoC 得到以下 html 代码 &#xff0c;生成poc.html 文件&#xff0c;当用户点击 <html><!-- CSRF PoC - generated by Burp Suite Professional --><body><…

C++仿函数的介绍以及priority_queue的介绍和模拟实现

目录 1.仿函数 1.1仿函数的介绍 1.2自定义类型使用仿函数 1.3自定义支持比较大小&#xff0c;但是比较的逻辑不是自己想要的逻辑 2.优先级队列priority_queue 2.1priority_queue的介绍 2.2priority_queue的使用 2.3priority_queue的模拟实现 1.仿函数 1.1仿函数的介绍…

Redis中一些其他的数据类型渐进式遍历

我们之前说了redis中的五个类型 分别是&#xff1a;String List Hash Set ZSet&#xff0c;那除了这五个redis文档中还给我们提供了一些其他的数据类型 &#xff08;一&#xff09;一些其他的数据类型 1.stream 这里的数据类型我们只做简单的一些介绍&#xff0c;如果想了解具体…

C++ | Leetcode C++题解之第452题用最少数量的箭引爆气球

题目&#xff1a; 题解&#xff1a; class Solution { public:int findMinArrowShots(vector<vector<int>>& points) {if (points.empty()) {return 0;}sort(points.begin(), points.end(), [](const vector<int>& u, const vector<int>&…

[云] Hands-on with a sample application--DockerCoins 挖矿程序!

DockerCoins 挖矿程序&#xff01;&#x1f4b0;&#x1f433;&#x1f4e6;&#x1f6a2; 不&#xff0c;你不能用 DockerCoins 买咖啡。 DockerCoins 如何工作&#xff1a; 生成一些随机字节&#xff1a; 程序首先生成一串随机的字节数据。这些随机字节用于模拟挖矿过程中的…

Pytorch实现玉米基因表达量预测模型

一、实验要求 通过搭建残差卷积网络&#xff0c;实现对玉米基因表达量的预测 二、实验目的 理解基因表达量预测问题&#xff1a;基因表达预测是生物信息学和基因组学领域中的重要任务之一&#xff0c;促进学科交叉融合。熟悉深度学习框架PyTorch&#xff1a;通过实现基因表达量…

Golang | Leetcode Golang题解之第453题最小操作次数使数组元素相等

题目&#xff1a; 题解&#xff1a; func minMoves(nums []int) (ans int) {min : nums[0]for _, num : range nums[1:] {if num < min {min num}}for _, num : range nums {ans num - min}return }

nodejs --- 使用全球公认头像gravatar

目录 历史&#xff1a;阿凡达 什么是头像&#xff1f; 我为什么要添加 Gravatar&#xff1f; 我怎样才能得到一个Gravatar&#xff1f; 开发者使用 功能描述 安装和使用 实践应用 我们他们名字旁边的灰色图标是怎么出现的。那么这个灰色图标被称为“神秘人”gravatar。…

IT新秀系列:Go语言的兴起

Go语言&#xff08;Golang&#xff09;由谷歌于2007年发起&#xff0c;并于2009年正式开源。它的诞生背景可以追溯到互联网技术的高速发展时期。那时&#xff0c;软件开发面临着多核计算、大规模并发处理、部署和维护效率低下等挑战。作为一种新型的编程语言&#xff0c;Go主要…

Nginx基础详解5(nginx集群、四七层的负载均衡、Jmeter工具的使用、实验验证集群的性能与单节点的性能)

续Nginx基础详解4&#xff08;location模块、nginx跨域问题的解决、nginx防盗链的设计原理及应用、nginx模块化解剖&#xff09;-CSDN博客 目录 14.nginx集群&#xff08;前传&#xff09; 14.1如何理解单节点和集群的概念 14.2单节点和集群的比较 14.3Nginx中的负载均衡…

指纹定位的原理与应用场景

目录 原理 1. 信号特征收集 2. 定位算法 推导公式 距离估算公式 定位算法公式 使用场景 发展前景 指纹定位是一种基于无线信号强度(如Wi-Fi、RFID、蓝牙等)来实现室内定位的技术。它借助于环境中多个基站的信号特征来推断用户的位置。以下是对指纹定位的详细讲解,包…

Spring Boot技术交流平台的设计与实践

3 系统分析 3.1 可行性分析 为了研究问题并确定问题是否能够在最短的时间内以最低的成本解决&#xff0c;经过对该项目的详细调查研究&#xff0c;初步准备了系统的实施报告&#xff0c;面临的问题和解决方案在软件开发方面进行了初步设计和合理安排&#xff0c;确定了开发目标…

Geoserver关于忘记密码的解决方法

第一次安装后&#xff0c;如果你设置密码那一栏一直都是默认的话&#xff0c;那么登录密码应该是账户 admin&#xff0c;密码 geoserver 但是&#xff0c;如果你自己设置了密码和账户&#xff0c;登录又登录不上&#xff0c;或者忘记了&#xff0c;有以下方法可以解决。 本质…

Hive数仓操作(九)

一、Hive的DQL查询顺序 HQL语法基本上与传统的SQL一致&#xff0c;包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY和LIMIT等关键步骤 SELECT * -- 1. 选择所有列 FROM employees -- 2. 数据来源是 employees 表 WHERE salary > 3000 -- 3. 筛选工资大于 3000 的…

AI在医学领域:Arges框架在溃疡性结肠炎上的应用

溃疡性结肠炎&#xff08;UC&#xff09;是一种慢性炎症性肠病&#xff08;IBD&#xff09;&#xff0c;在全球大约影响着500万人&#xff0c;导致肠道炎症和溃疡。在UC的临床试验中&#xff0c;通常通过内窥镜视频来评估结肠疾病的严重程度&#xff0c;并使用如Mayo内窥镜下分…

leetcode_198_打家劫舍

思路&#xff1a;首先定义一个数组对于dp[i]读作1->i能获取的最大利益&#xff0c;第i个房屋只有"偷"和不"偷"两种情况&#xff0c;分别进行讨论 "偷": 既然"偷"了 i那就肯定不能偷i-1了,但是为了使"偷"的尽可能多除了必…

Microsoft 解釋修改後的 Recall 將如何保障隱私與安全

Microsoft 為 Copilot AI 電腦推出的 Recall 功能&#xff0c;本意是藉由定期進行螢幕截圖&#xff0c;並分析上面的資訊&#xff0c;來協助用戶找到查看過的網頁、工作過的文件等各種資訊。然而雖然立意很好&#xff0c;但 Microsoft 推出之初似乎完全沒有考慮到用戶的隱私安全…

多区域OSPF路由协议

前言 之前也有过关于OSPF路由协议的博客&#xff0c;但都不是很满意&#xff0c;不是很完整。现在也是听老师讲解完OSPF路由协议&#xff0c;感触良多&#xff0c;所以这里重新整理一遍。这次应该是会满意的 一些相关概念 链路状态 链路指路由器上的一个接口&#xff0c;链路状…

Pikachu-Cross-Site Scripting-DOM型xss

DOM型xss DOM型XSS漏洞是一种特殊类型的XSS,是基于文档对象模型 Document Object Model (DOM)的一种漏洞。是一个与平台、编程语言无关的接口&#xff0c;它允许程序或脚本动态地访问和更新文档内容、结构和样式&#xff0c;处理后的结果能够成为显示页面的一部分。 dom就是一…