一文教你学会使用Nginx

前段时间,了不起给大家说过如果使用 Docker 发布自己的后端项目 , 也就不再使用 Jar 包进行项目的发版操作,但是这其中就又涉及到了前端如何发版,为什么这么说,因为资深前端开发,可能知道各种发版内容等,但是对于一般的前端开发来说,走到build后,就已经算是比较不错了,接下来如果没有运维的话,那么在不使用 jekins 的情况下,就只能是后端来进行发版了,今天我们讲讲这个docker 是如何发布前端应用的 。
前端发布现在部署前端服务,肯定少不了 Nginx,了不起就先从这个 Nginx 来开始讲一下吧 。
“Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻塞处理方式框架 , 这让其具有极好的IO性能,时常用于服务端的反向代理和负载均衡 。”
选择Nginx的原因有以下几点:

  1. 高性能:Nginx以事件驱动的方式处理请求,能够高效地处理大量并发连接 , 适合高负载的场景 。
  2. 资源消耗低:相比其他Web服务器 , Nginx占用的系统资源更少,能够在相同硬件上处理更多的请求 。
  3. 可扩展性:Nginx支持模块化的架构,可以通过添加模块来扩展功能,满足不同需求 。
  4. 反向代理和负载均衡:Nginx内置了反向代理和负载均衡功能,能够有效地分发请求到多个后端服务器 。
  5. 高可靠性:Nginx经过长时间的实际应用验证,稳定性和可靠性较高 。
总的来说,Nginx在高性能、低资源消耗、可扩展性和高可靠性方面表现出色,因此被广泛选择作为Web服务器和反向代理服务器 。
安装 Nginx一般的,我们都是使用 Docker 来进行这个 Nginx 的安装
要在Docker中安装Nginx,可以按照以下步骤进行操作:
  1. 首先,确保你已经安装了Docker 。如果没有安装,可以根据你的操作系统在Docker官方网站上找到相应的安装指南 。
  2. 打开终端或命令行界面 , 执行以下命令来拉取Nginx镜像:
docker pull nginx这将从Docker Hub上拉取最新的Nginx镜像到你的本地环境 。
  1. 当镜像拉取完成后,可以使用以下命令来创建并运行一个Nginx容器:
docker run --name mynginx -d -p 80:80 nginx这个命令将创建一个名为mynginx的容器,并将容器的80端口映射到宿主机的80端口,使得可以通过浏览器访问Nginx服务 。
  1. 现在 , 你可以通过浏览器访问http://localhost来查看Nginx默认页面,或者使用宿主机的IP地址来访问Nginx服务 。
这样就完成了在Docker中安装Nginx的过程 。
Nginx 的相关配置worker_processes1;# worker进程的数量events {# 事件区块开始worker_connections1024;# 每个worker进程支持的最大连接数}# 事件区块结束http {# HTTP区块开始includemime.types;# Nginx支持的媒体类型库文件default_typeApplication/octet-stream;# 默认的媒体类型sendfileon;# 开启高效传输模式keepalive_timeout65;# 连接超时server {# 第一个Server区块开始,表示一个独立的虚拟主机站点listen80;# 提供服务的端口,默认80server_namelocalhost;# 提供服务的域名主机名location / {# 第一个location区块开始roothtml;# 站点的根目录 , 相当于Nginx的安装目录indexindex.html index.htm;# 默认的首页文件,多个用空格分开}# 第一个location区块结果error_page500502503504/50x.html;# 出现对应的http状态码时,使用50x.html回应客户location = /50x.html {# location区块开始,访问50x.htmlroothtml;# 指定对应的站点目录为html}}......其实我们相对来说只需要关注 location 中的相关配置就可以了 , 
但是对于 Nginx 了不起还是想多说一下这个的 。
Nginx 的正向代理正向代理是指代理服务器代表客户端向服务器发出请求 , 然后将服务器的响应返回给客户端 。在Nginx中,可以通过配置代理服务器来实现正向代理功能 。具体的配置如下:
server {listen80;server_namelocalhost;location / {proxy_pass http://example.com;# 将请求转发到指定的服务器proxy_set_header Host $host;# 设置请求头中的Host字段proxy_set_header X-Real-IP $remote_addr;# 设置请求头中的真实IP地址proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 设置请求头中的转发地址proxy_set_header X-Forwarded-Proto $scheme;# 设置请求头中的协议类型}}


推荐阅读