如何使用Nginx 部署项目?什么是反向代理?

2022-11-07 15:17:22 浏览数 (1)

目录

1、配置文件结构

2、部署静态资源

3、反向代理

3.1 概念

3.2 配置并测试

4、负载均衡

4.1 介绍

4.2 配置并测试

4.3 负载均衡策略


初识Nginx Linux 中安装Nginx_一切总会归于平淡的博客-CSDN博客_nginx编译安装

这篇博客介绍了并安装了Nginx之后,本片博客就要讲解Nginx 的应用。

1、配置文件结构

nginx的配置文件(conf/nginx.conf)整体上分为三部分:

  1. 全局块;
  2. events块;
  3. http块;

这三块的分别配置什么样的信息呢,看下表:

在这个三个地方,我们操作得最多的地方就是http块,在http块中可以包含多个server块,每个server块可以配置多个location块。

2、部署静态资源

Nginx可以作为静态web服务器来部署静态资源。这里所说的静态资源是指在我们web服务端真实存在,并且能够直接展示的一些文件,比如常见的html页面、css文件、js文件、图片、视频等资源,那么我们就可以使用Nginx来部署这些静态资源。

为什么我们不使用Tomcat来部署静态资源,而使用nginx 呢?

这是因为 相对于Tomcat,Nginx处理静态资源的能力更加高效,所以在生产环境下,一般都会将静态资源部署到Nginx中。

将静态资源部署到Nginx非常简单,只需要将文件复制到Nginx安装目录下的html目录中即可。

例如:

代码语言:javascript复制
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Hello nginx!</h1>
</body>
</html>
  1. 将静态资源上传到 /usr/local/nginx/html 目录(看好路径,别上传错了)

2.启动nginx

3. 访问

4.修改默认首页

如果我们需要将hello.html作为nginx的首页,可以修改location的index指令,将其修改为hello.html,如下:

配置文件修改了,我们需要重新加载一下,才可以生效:

代码语言:javascript复制
nginx -s reload

配置文件修改了,我们需要重新加载一下,才可以生效:

代码语言:javascript复制
nginx -s reload

3、反向代理

Nginx所提供的这个反向代理功能是我们后面使用非常多的功能。

我们在了解什么是反向代理之前,先来了解一下什么是正向代理。

3.1 概念

大家看上图,发现反向代理跟正向代理过程好像是一样的,都是客户端访问代理服务器,然后代理服务器将请求发给服务器。

实际上,反向代理和正向代理的区别在哪里呢?

就是这个正向代理在我们的这个客户端来设置这个代理服务器,而且我们的客户端是知道有这个代理服务器的。

而在我们的反向代理中,我们的客户端它其实是不知道有代理服务器这个存在的,那么我们客户端只需要访问这个反向代理这个服务器,然后这个反向代理服务器就会给他返回相应的资源。

那么在这个过程中,我们的客户他其实都不知道我们的目标服务器在什么位置,甚至都不知道有目标服务器的存在。

3.2 配置并测试

那么接下来,我们就是要使用nginx来作为反向代理服务器使用。

首先我们要准备两台服务器,没钱的像我一样,使用虚拟机。

一台安装好Nginx,一台配置好java 环境。

1、首先我们将自己手上的随意一个项目上传到服务器上,并启动,自己测试一下能不能访问到。

浏览器测试

2、在代理服务器中配置反向代理

进入nginx的安装目录,并编辑配置文件nginx.conf;

代码语言:javascript复制
cd /usr/local/nginx/conf/  #看大家自己的Nginx安装在何处
代码语言:javascript复制
vim nginx.conf

在http块中,再添加一个server块虚拟主机的配置,监听82端口,并配置反向代理proxy_pass:

代码语言:javascript复制
server {
    listen 82;
    server_name localhost;
    location / {
        proxy_pass http://192.168.231.136:8080; 	#反向代理配置,将请求转发到指定服务
    }
}

3、检查配置文件,并重新加载

代码语言:javascript复制
nginx -t
代码语言:javascript复制
nginx -s reload

 4、开放 82 端口,如果你开启了,忽略这一步

代码语言:javascript复制
firewall-cmd --zone=public --add-port=82/tcp --permanent
代码语言:javascript复制
firewall-cmd --reload

5、 访问

4、负载均衡

4.1 介绍

现在我们来了解负载均衡,负载均衡也是Nginx为我们提供的非常非常重要的一个功能。

以前的业务都是非常简单的,一台服务器就能满足我们的需求,但是随着互联网的发展,业务流量越来越大,并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障出现。

这里有两个概念,大家了解一下:

应用集群

将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回响应数据。

负载均衡器

将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理。

此处的负载均衡器,我们将会使用Nginx来实现,而Nginx的负载均衡是基于反向代理的,只不过此时所代理的服务器不是一台,而是多台。

4.2 配置并测试

这里大家可以再多加一台服务器或者虚拟机,我懒选择在同一虚拟机上,运行两个Java项目,但是端口不一样用于区分。(记得开放端口!!!)

1、在代理服务器上配置Nginx.

打开nginx的配置文件nginx.conf并增加如下配置:

代码语言:javascript复制
#upstream指令可以定义一组服务器
upstream targetserver{	
    server 192.168.231.136:8080;
    server 192.168.231.136:8081;
}

server {
    listen       82;
    server_name  localhost;
    location / {
        proxy_pass http://targetserver; #反向代理配置,将请求转发到指定服务
    }
}

具体配置位置如下:

2、 重新加载nginx配置文件,访问

测试时,我们直接访问nginx的82端口(http://192.168.231.134:82/hello), 此时nginx会根据负载均衡策略,将请求转发到后面的两台服务器。

在上述的测试过程中,我们看到请求均衡的转发到了8080和8081,因为模式的负载均衡策略是轮询。

4.3 负载均衡策略

处理上述默认的轮询策略以外,在Nginx中还提供了其他的负载均衡策略,如下:

权重的配置:

代码语言:javascript复制
#upstream指令可以定义一组服务器
upstream targetserver{	
    server 192.168.231.136:8080 weight=10;
    server 192.168.231.136:8081 weight=5;
}

上述配置的weight权重是相对的,在上述的配置中,效果就是,在大数据量的请求下,最终8080接收的请求数是8081的两倍。

若有收获,就点个赞吧

0 人点赞