文章目录
Linux下面安装nginx
nginx下载官网: [nginx: download](https://nginx.org/en/download.html)使用yum命令安装gcc环境
yum install -y wget gcc-c++ pcre-devel zlib-devel openssl-devel
//安装多个环境 wget gcc pcre-devel 支持正则表达式 zlib-devel提供了压缩和解压缩的功能
openssl-devel 提供了SLL/TLS加密功能,用于网络通信和加密操作
通过wget下载linux版本下面的nginx服务器
wget https://nginx.org/download/nginx-1.26.2.tar.gz //下载压缩包
解压缩
tar -zxvf nginx-1.24.0.tar.gz //解压
-z:解压缩使用 gzip 进行压缩的文件。
-x:提取归档文件中的内容。
-v:在提取过程中显示文件名,提供详细的处理信息。
-f:指定归档文件的名称。
执行此命令后,归档中的文件和目录将被解压缩到当前目录。
cd nginx-1.24.0 进入到nginx中
创建nginx的目录 mkdir -p /usr/local/nginx
配置nginx的目录
./configure --prefix=/usr/local/nginx
编译并安装
make && make install
./configure:这是一个用于配置 Nginx 编译选项的脚本。它检查系统环境,并生成一个适合你系统的 Makefile 文件。
--prefix=/usr/local/nginx:指定 Nginx 的安装目录。所有的 Nginx 文件将安装到 /usr/local/nginx 目录中。
make:编译 Nginx 源代码。make 命令会根据 configure 生成的 Makefile 文件编译源代码,生成可执行文件和其他必要的文件。
&&:逻辑与操作符,用于将两个命令串联在一起。如果第一个命令(make)成功执行,才会执行第二个命令(make install)。
make install:安装编译后的 Nginx 文件到指定的目录(由 --prefix 选项指定的目录)。它将编译生成的文件复制到 /usr/local/nginx 目录中。
nginx项目结构
![](https://img-blog.csdnimg.cn/img_convert/f9f708ffafd0491a28f945a748b5f742.png)配置文件、html静态文件、logs日志记录、sbin/nginx 二进制文件,用来启动和停止nginx服务。
nginx的目录结构,通过tree命令来展示。
nginx常用命令:
查看nginx的版本号:./nginx -v
检查配置文件的正确性
./nginx -t //检验nginx文件是否配置正确
启动nginx
./nginx 访问服务器的地址,ok 启动了nginx的进程
查看nginx的进程
ps -ef | grep nginx
关于防火墙,nginx需要关闭系统的防火墙
# 查看防火墙状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld
# 开机禁用防火墙
systemctl disable firewalld
停止nginx服务 ./nginx -s stop
启动之后会有一些临时目录这些目录存放一些临时的文件
当修改nginx配置文件之后,需要重新加载。
./nginx -s reload //重新加载
//也可以先停止 然后重新启动
修改配置文件,变为全局的命令
配置文件
nginx的配置文件整体分成了三块:
主要使用的是server模块。
listen: nginx监听的端口 server_name 前端服务器的地址
在 Nginx 配置文件中,location 指令用于定义如何处理特定的 URL 请求。
用于匹配以 / 开头的所有请求。因为 / 是一个通配符,它会匹配所有以 / 开头的请求,因此这个 location 块几乎适用于所有的请求路径。
root 指令指定了一个目录,Nginx 将在这个目录下查找请求的文件。这里 html/dist 是指定的目录路径,Nginx 会在这个目录下查找请求的文件。例如,如果请求的是 /images/logo.png,Nginx 会在 html/dist/images/logo.png 中查找文件。
反向代理服务
正向代理:**翻墙。**反向代理:分流。作为统一的入口,反向代理服务器提供转发。
正向代理:代理服务器是在客户端设置的,反向代理代理的是在服务器设置的。
配置代理服务器:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
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/dist; //根目录
index index.html; //index文件
# 如果vue路由用的history模式,则添加下面的配置
try_files $uri $uri/ /index.html;
}
# 如果存在跨域,则添加下面的配置,使用代理
location /api/ {
rewrite ^/api/(.*)$ /$1 break; //将api去掉
proxy_pass http://localhost:8888; //转发的代理服务器
}
}
}
//rewrite 很重要,这个地址中的api删除掉
proxy_pass 是 Nginx 配置文件中 location 块的一部分,用于设置反向代理服务器。它的作用是将客户端请求转发到另一个服务器,并将该服务器的响应返回给客户端。
前端vue工程通过npm run build进行打包,打包的内容存放在了dist文件夹下面。
负载均衡
所谓[负载均衡](https://so.csdn.net/so/search?q=%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1&spm=1001.2101.3001.7020) 就是:就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器,从而不会产生集群中大量请求只请求某一台服务器,从而使该服务器宕机的情况。常见的负载均衡的方式:
轮询(默认)
weight 权重
ip_hash
最少连接
docker安装nginx
上面的方法安装nginx比较繁琐,可以使用docker一键部署nginx。# 第1步,去DockerHub查看nginx镜像仓库及相关信息
# 第2步,拉取Nginx镜像
docker pull nginx
# 第3步,查看镜像
docker images
# 结果如下:
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 16 months ago 141MB //查看到nginx
mysql latest 3218b38490ce 17 months ago 516MB
# 第4步,创建并允许Nginx容器
docker run -d --name nginx -p 80:80 nginx
# 第5步,查看运行中容器
docker ps
# 也可以加格式化方式访问,格式会更加清爽
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
# 第6步,访问网页,地址:http://虚拟机地址
# 第7步,停止容器
docker stop nginx
# 第8步,查看所有容器
docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
# 第9步,再次启动nginx容器
docker start nginx
# 第10步,再次查看容器
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
# 第11步,查看容器详细信息
docker inspect nginx
# 第12步,进入容器,查看容器内目录
docker exec -it nginx bash
# 或者,可以进入MySQL
docker exec -it mysql mysql -uroot -p
# 第13步,删除容器
docker rm nginx
# 发现无法删除,因为容器运行中,强制删除容器
docker rm -f nginx
这个命令是用来启动一个 Nginx 容器的,具体解析如下:
docker run -d --name nginx -p 80:80 nginx
### 1. `docker run`
这是 Docker 命令,用来运行一个新的容器。它可以从一个镜像启动容器,并执行指定的命令。
### 2. `-d`
这是**后台运行**容器的选项,表示容器会在后台运行而不会占用当前终端。
### 3. `--name nginx`
这个选项用于指定容器的名称,这里将容器命名为 `nginx`,方便管理和操作容器。
### 4. `-p 80:80`
这是**端口映射**的选项,用来将主机的端口映射到容器内部的端口。
- 左边的 `80` 是**主机**上的端口号,表示将主机的 `80` 端口映射到容器的端口。
- 右边的 `80` 是**容器**内的端口号,Nginx 默认使用容器内的 `80` 端口对外提供服务。
这样做的效果是,当你访问主机的 `80` 端口时,实际上是在访问容器内 Nginx 服务的 `80` 端口。
### 5. `nginx`
这是**镜像名称**,表示使用 `nginx` 镜像来创建容器。如果本地没有这个镜像,Docker 会从默认的 Docker Hub 拉取这个镜像。
### 综合解释:
这个命令会启动一个基于 Nginx 镜像的容器,容器会以 `nginx` 命名,并将主机的 `80` 端口映射到容器的 `80` 端口。同时,容器会在后台运行,你可以通过主机的 IP 地址访问这个 Nginx 服务(例如在浏览器中输入 `http://localhost` 访问)。