nginx(负载均衡,反向代理)+springBoot(初次使用nginx安装配置笔记)

一 、前言

网上一直说nginx很好用,也阅读过一些有关的文章。它最重要的功能是负载均衡和反向代理。

在没有接触过“负载均衡”以及“反向代理”之前,一直觉得这两个东西遥不可及。随着越来越深入的了解,也有了自己一些浅显的见解。

1.负载均衡

在初入项目开发的时候,一般不会接触到负载均衡这个名词。我们只做一些比较小的,或者说是访问量不大的程序。

例如个人博客,电商网站,校园内便捷应用(二手交易,校园商铺...)等这些练手的网站。

只需要创建一个项目,开发完成之后发布到linux上就已经觉得大功告成了(依稀还记得第一次将自己的项目发布到linux上的那种喜悦,原来网站时这么来的~)

这个时候,我们从来不会去考虑性能的问题,只觉得能用了就行了。

随着入行越来越深,便发现会有很多问题得不到解答,如

难道那么大的应用是全在一个项目里开发的么?那这个项目启动都要好久吧......

他这个项目是怎么访问到其他项目写好的程序的?真是奇怪啊......

如果一个项目的访问量瞬间爆发怎么办?我的服务器会不会死机....

这类问题越来越多,需要一个个去探索,而“负载均衡”就是解决上述瞬间访问量巨大的问题的。

nginx(负载均衡,反向代理)+springBoot(初次使用nginx安装配置笔记)_第1张图片

(图片来源于网络,如有侵权,请告知删除)

nginx充当了一个代理服务器。我对“代理”这个词的理解是他可以帮忙拦截请求,帮我们真正的服务代劳接收这个请求,然后再分发给真正的服务器。

在没有nginx服务器之前,请求springBoot项目的接口,我们需要这样:http://ip:8084/testapi 

在有nginx服务器之后,只需要这样:http://ip/testapi (nginx服务默认是80端口,所以可以省略)

这个时候,我就有疑问了,这只不过是隐藏了端口而已。然而他真正的作用不在于此。

当没有nginx服务器之前,我们只有一个项目接收客户端的请求,这样的问题会有很多。请求峰值过高导致服务响应慢,万一服务器宕机怎么办等等等等

这个时候就想起了nginx服务器,他既然能够拦截请求,分发请求,那我们需要多搞几台服务器,发布同样的服务,然后再服务集群到nginx服务器当中,这样nginx在接受了服务之后,就能将服务分散到各个不同的服务器上,既实现了请求的需求,又减小了服务器的压力。

这里还会涉及到各个服务的权重以及请求分发算法~(这个以后再写)

这就是负载均衡。

2.反向代理

既然有反向也就有正向。

反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。

正向代理具有指向性,如访问外国网站YouTube,我们需要访问正向代理服务器,这个服务器具有指向性(指定网站YouTube返回数据给客户端)(其实访问YouTube的话,YouTube也有他的反向代理服务器,所以很多情况下,都是正向反向一起用的)

反向代理就是人在国外,直接访问YouTube,不需要经过指向性的正向代理了,我们面对的就是YouTube的服务器,具体要如何请求数据,网站的代理会完成。

二、nginx的安装

1.下载安装包,如果需要特定版本的可以前往官网下载:Nginx官网

wget -c https://nginx.org/download/nginx-1.10.1.tar.gz

2.官网下载的是源码,需要先安装编译环境

yum install gcc-c++

3.安装依赖库

yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel

4.解压

tar -zxvf nginx-1.10.1.tar.gz

5.进入解压目录

cd nginx-1.10.1

6.配置(下面命令选一个)

./configure(默认配置)

./configure --prefix=/usr/local/nginx  (指定安装目录)

7.编译安装nginx

make

make install

make && make install (上面两步可以合作一步)

编译安装完成后(如果是默认安装,返回上一级就可以看到多了个文件夹)(如果是指定的,可以看到指定文件夹内多了一些文件)

8./进入安装文件夹的sbin

cd /usr/local/nginx/sbin

9.启动nginx(可以配置全局变量,直接使用nginx命令启动,具体操作方法,文章第一点:环境变量配置)

./nginx

三、nginx的配置

附上文章:配置详解

nginx的详细配置内容比较多,放到另一篇文章,这里只配置用到的地方,其他使用默认。

1.进入nginx目录的配置文件夹

cd /usr/local/nginx/conf

2.编辑nginx.conf

vim nginx.conf

nginx(负载均衡,反向代理)+springBoot(初次使用nginx安装配置笔记)_第2张图片

主要修改两个地方,第一个框要自己手动加

第一个地方:server 后面配置的是项目访问的端口,配置多个可以让nginx通过请求分发算法去访问这些端口(实现负载均衡)

upstream name{
    #ip_hash  这里可以配置请求分发算法
    server xxx.xx.xxx.xx:端口
    server xxx.xxx.xxx.xxx:端口
}

第二个地方:要往location /{ } 内添加的

location / {
    #最后面的name 要和自己定义的对应,名字可以随意,只要对应即可
    proxy_pass http://name;
    proxy_redirect default;
}

配置完使用nginx -t 测试配置文件是否有误,测试没问题后使用 nginx -s reload 命令使配置文件生效,生效后便可以开始测试了↓

四、nginx反向代理测试

1.这是我原来的访问方式,当然配置了代理之后,还是可以通过这种方式访问

nginx(负载均衡,反向代理)+springBoot(初次使用nginx安装配置笔记)_第3张图片

2.配置了nginx后,可以如下这么访问

nginx(负载均衡,反向代理)+springBoot(初次使用nginx安装配置笔记)_第4张图片

直接省略端口,nginx会对请求进行过滤,将请求分发给配置好的服务器。

五、nginx的常用命令

帮助命令:nginx -h
启动Nginx服务器 :nginx
查看进程: ps aux | grep nginx
配置文件路径:/usr/local/nginx/conf/nginx.conf
检查配置文件:nginx -t
指定启动配置文件:nginx -c /usr/local/nginx/conf/nginx.conf
暴力停止服务:nginx -s stop
优雅停止服务:nginx -s quit
重新加载配置文件:nginx -s reload

 

你可能感兴趣的:(linux,nginx)