文章目录
一、Nginx简介
Nginx 是一个高性能的 HTTP (静态资源服务器) 和 反向代理 Web 服务器。
为什么要使用Nginx
1、如果将前端项目资源也放置在 tomcat 中部署,那么访问一些前端静态资源的时候就需要访问 tomcat,增加服务器压力(本身 tomcat 服务器处理能力有限),所以我们需要一台高效的静态资源服务器。
什么意思:如果将前端和后端的代码部署到一起,那么访问静态资源会走 tomcat。----> 将前端和后端代码分开部署
2、随着项目访问量的增加,tomcat 并不能满足要求(tomcat 的并发量大概在 200 左右)。这时候我们需要搭建 tomcat 集群来处理并发问题,所以我们需要一台高效的反向代理服务器。
集群:1 个 tomcat 不够,n 个来凑。问题:n 个 tomcat 的端口肯定不能一样(除非搞 n 台机器),所以我们这里说的是:伪集群(一个机器上搞多个 tomcat),但是对于客户来说,我应该访问哪个端口呢?----> 需要 Nginx
Nginx的特点
- 稳定性强,可以实现 7*24 不间断运行
- 提供简洁、直观的配置
- 占用内存小,并发能力强
Nginx的相关概念
正向代理
一个位于 客户端 和 原始服务器 之间的服务器。为了从 原始服务器 中取得内容,客户端 向 代理 发送一个请求并指定目标(原始服务器),然后 代理 向 原始服务器 转交请求 并将获得的内容返回给客户端。
反向代理
反向代理位于用户与目标服务器之间。
对于用户:反向代理服务器就相当于目标服务器。即:用户直接访问反向代理服务器就可以获得目标服务器的资源。(用户不需要知道目标服务器的地址,也无须在用户端作任何设定)
反向代理服务器通常可用来作为 Web 加速,即使用反向代理作为 Web 服务器的前置机 来降低网络和服务器的负载,提高访问效率。
动静分离
随着前后端分离开发,可以实现前后端项目的分离部署。即:将前端项目部署到 Nginx 上直接进行访问,后端资源通过 Nginx 反向代理进行访问。
负载均衡
通过负载均衡策略,分发请求到集群中的不同 tomcat 服务器上。
二、Nginx安装
1. Windows安装
下载解压后,执行根目录下 nginx.exe 启动(不要放置含有中文的路径下,否则启动不成功),然后输入:http://localhost 访问即可。
2. Linux安装
1、先安装 Nginx 所需环境:
bash
安装gcc:一般这个Linux会自带,但是最好也安装一下,怕不带
yum install -y gcc-c++
安装PCRE pcre-devel:
yum install -y pcre pcre-devel
安装zlib:
yum install -y zlib zlib-devel
安装Open SSL:
yum install -y openssl openssl-devel
2、安装 Nginx:下载地址
2.1 下载并解压: 将下载的 xxx.tar.gz 上传到 Linux,并解压到 /usr/local 下(这里我解压到 /usr/local/nginx 下了),解压命令:tar -zxvf nginx-1.26.0.tar.gz -C /usr/local/nginx
2.2 编译安装: 进入解压后的目录:cd /usr/local/nginx/nginx-1.26.0
;然后输入命令:./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre
生成 makefile 文件;然后继续输入:make
编译;再输入:make install
安装(可以一起 make && make install
编译安装)
注意:其中生成 makefile 文件命令中的 /usr/local/nginx 路径就是 Nginx 的路径(可以改成别的路径),后面要启动 Nginx 程序就要去那启动。
2.3 启动运行: 首先进入 Nginx 的启动目录:cd /usr/local/nginx/sbin
,然后:
bash
查看Nginx版本:
./nginx -v
启动Nginx:
./nginx
停止Nginx:
./nginx -s stop
重启Nginx:
./nginx -s reload
注意:Nginx 启动后默认端口为 80,80 端口在浏览器页面可以不写。所以我们直接浏览器输入 IP 地址即可。
报错:假如页面加载不出来,则需要 Linux 系统开放 80 端口:
bash
1.开放80端口,命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
2.重启防火墙:systemctl restart firewalld.service
3.重新载入配置:firewall-cmd --reload