您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

一文教你学会使用Nginx

时间:2023-12-27 13:19:08  来源:微信公众号  作者: Java极客技术

前段时间,了不起给大家说过如果使用 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_processes  1;                   # worker进程的数量
events {                                 # 事件区块开始
    worker_connections  1024;            # 每个worker进程支持的最大连接数
}                                  # 事件区块结束
http {                              # HTTP区块开始
    include       mime.types;            # Nginx支持的媒体类型库文件
    default_type  Application/octet-stream;            # 默认的媒体类型
    sendfile        on;           # 开启高效传输模式
    keepalive_timeout  65;          # 连接超时
    server {                              # 第一个Server区块开始,表示一个独立的虚拟主机站点
        listen       80;                 # 提供服务的端口,默认80
        server_name  localhost;       # 提供服务的域名主机名
        location / {                      # 第一个location区块开始
            root   html;          # 站点的根目录,相当于Nginx的安装目录
            index  index.html index.htm;        # 默认的首页文件,多个用空格分开
        }                      # 第一个location区块结果
        error_page   500502503504  /50x.html;          # 出现对应的http状态码时,使用50x.html回应客户
        location = /50x.html {                   # location区块开始,访问50x.html
            root   html;                       # 指定对应的站点目录为html
        }
    }  
    ......

其实我们相对来说只需要关注 location 中的相关配置就可以了,

但是对于 Nginx 了不起还是想多说一下这个的。

Nginx 的正向代理

正向代理是指代理服务器代表客户端向服务器发出请求,然后将服务器的响应返回给客户端。在Nginx中,可以通过配置代理服务器来实现正向代理功能。具体的配置如下:

server {
    listen       80;
    server_name  localhost;

    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;  # 设置请求头中的协议类型
    }
}

以上配置将客户端的请求转发到http://example.com,并且在转发过程中设置了一些请求头信息,以便服务器能够正确处理请求。

Nginx的反向代理

Nginx的反向代理是指Nginx作为客户端与其他服务器进行通信,并将客户端的请求转发到这些服务器上。这种代理隐藏了真实的服务器,客户端只知道与Nginx通信,而不知道真正处理请求的服务器是谁。反向代理可以用于负载均衡、安全性增强和缓存等方面。

在Nginx中配置反向代理可以使用以下指令:

location / {
    proxy_pass http://backend_server;
}

其中backend_server是真实服务器的地址。这样,当客户端发送请求时,Nginx会将请求转发到backend_server上,并将响应返回给客户端。

Nginx 的错误页面配置

在nginx中,可以通过配置自定义错误页面来提供更友好的用户体验。你可以在nginx的配置文件中使用error_page指令来指定不同错误码对应的错误页面,例如:

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;

上面的配置指定了当出现404错误时,显示404.html页面;当出现500、502、503、504错误时,显示50x.html页面。

如果你想为所有的错误码都显示同一个错误页面,可以这样配置:

error_page 500 502 503 504 /error.html;

这样就会将所有500系列的错误都显示error.html页面。

另外,你也可以使用变量来动态指定错误页面的路径,例如:

error_page 404 = /custom404.php;

这样就可以根据具体情况动态指定404错误对应的页面路径。

了解完这些内容,我们就可以来看一下部署这个前端应用了。

一般如果我们选择部署前端项目并且使用 Nginx 的话,那么我们不需要单独的去启动这个 Nginx ,

而我们使用的则是通过前端的依赖,导入这个 Nginx ,也相当于是依赖这个 Nginx,我们来看看这个 Docker怎么部署,

Docker 部署前端服务

准备工作:

1:准备 Nginx 镜像

2:准备 Dockerfile 文件

3:准备 Nginx 的配置文件

4:准备前端dist包

5:打包

6:启动

我们刚才已经说了这个 Nginx 的安装了,已经准备好了,接下来就是准备 Dockerfile 文件

# 使用nginx镜像
FROM nginx
# 作者
MAINTAINER zhiyikeji
# 删除nginx 默认配置
RUN rm /etc/nginx/conf.d/default.conf
# 添加我们自己的配置 default.conf 在下面
ADD default.conf /etc/nginx/conf.d/
# 把刚才生成dist文件夹下的文件copy到nginx下面去
COPY dist/  /usr/share/nginx/html/

上面的内容就是 Dockerfile 文件中的内容

接下来我们准备 nginx 的配置文件 default.conf

server {
    listen       17878;
    server_name  192.168.10.1;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;
location /api/{
        proxy_pass   http://192.168.10.1:18081/;
        }

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ .php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ .php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /.ht {
    #    deny  all;
    #}
}

前端dist包我们直接冲前端要一份即可。

打包命令如下:

docker build -t vue-app .

启动命令如下:

docker run -d --name vue-app -p 17878:19529 vue-app

这样我们就发版完成了,是不是很简单,但是你要了解Nginx 的相关内容才算是了解了。你学会了么?



Tags:Nginx   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
为什么Nginx被称为“反向”代理呢?
Nginx(发音为"engine-x")是一款高性能、轻量级的开源Web服务器软件,也可用作反向代理服务器、负载均衡器和HTTP缓存。Nginx之所以有被称为“反向”代理,是因为它充当客户端设备...【详细内容】
2024-02-01  Search: Nginx  点击:(59)  评论:(0)  加入收藏
如何在Java环境中安装Nginx?
1. 下载Nginx:首先,前往Nginx官方网站(https://nginx.org/en/download.html)下载新版本的Nginx。选择适合您操作系统的版本,通常有Windows、Linux和Mac等不同操作系统的版本可供...【详细内容】
2024-01-22  Search: Nginx  点击:(58)  评论:(0)  加入收藏
一文教你学会使用Nginx
前段时间,了不起给大家说过如果使用 Docker 发布自己的后端项目,也就不再使用 Jar 包进行项目的发版操作,但是这其中就又涉及到了前端如何发版,为什么这么说,因为资深前端开发,可...【详细内容】
2023-12-27  Search: Nginx  点击:(87)  评论:(0)  加入收藏
Nginx 反向代理为什么叫做“反向”?
今天我们来聊聊正向代理和反向代理。01 正向代理(Forward Proxy)正向代理是位于用户设备和互联网之间的服务器。它代理的是客户端,是站在用户一方的。其真实客户端对于服务器不...【详细内容】
2023-12-06  Search: Nginx  点击:(90)  评论:(0)  加入收藏
Nginx的负载均衡实现,你学会了吗?
环境 主机 ip 用途 软件 web1 192.168.50.60 nginx-1 httpd web2 192.168.50.61 nginx-2 httpd proxy 192.168.50.62 负载...【详细内容】
2023-12-06  Search: Nginx  点击:(145)  评论:(0)  加入收藏
Nginx如何开启GZIP文件压缩,你学会了吗?
简介GZip 是一种改进web应用程序性能的技术,文件压缩后再传输可以减少传输数据,提升传输速度。在Nginx服务器上开启Gzip压缩可以有效减少网络传输流量,提升网站的访问速度和性...【详细内容】
2023-11-30  Search: Nginx  点击:(121)  评论:(0)  加入收藏
Nginx配置文件中的关键字是什么?
Nginx 是一款高性能的 Web 服务器软件,同时也是一款反向代理服务器软件。Nginx 的配置文件通常是 /etc/nginx/nginx.conf,以下是一个典型的配置文件,并对其中的关键字进行详细...【详细内容】
2023-11-22  Search: Nginx  点击:(147)  评论:(0)  加入收藏
Nginx 大揭秘:读写分离助力您轻松征服高并发
引言在构建高性能、高可用的 Web 应用时,如何有效地处理数据库的读写负担已成为一个十分重要的考虑因素。Nginx 作为一款强大的反向代理服务器,提供了简单而灵活的负载均衡配...【详细内容】
2023-11-14  Search: Nginx  点击:(50)  评论:(0)  加入收藏
Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?
k8s发布应用的两种方式: kubernetes-dashboard kubectl命令行一、Dashboard方式配置部署:包含应用名称、容器镒、pod数量、Service非常的方便,不想设置配置yaml的可以很方便的...【详细内容】
2023-11-06  Search: Nginx  点击:(367)  评论:(0)  加入收藏
掌握Nginx的高级用法,构建高性能Web应用
Nginx是一款高性能的Web服务器和反向代理服务器,它广泛用于构建高性能、可靠和安全的Web应用程序。除了基本的用法外,Nginx还提供了一些高级功能和配置选项,可以进一步优化性能...【详细内容】
2023-10-26  Search: Nginx  点击:(218)  评论:(0)  加入收藏
▌简易百科推荐
为什么Nginx被称为“反向”代理呢?
Nginx(发音为"engine-x")是一款高性能、轻量级的开源Web服务器软件,也可用作反向代理服务器、负载均衡器和HTTP缓存。Nginx之所以有被称为“反向”代理,是因为它充当客户端设备...【详细内容】
2024-02-01  coderidea  微信公众号  Tags:Nginx   点击:(59)  评论:(0)  加入收藏
哪种服务器操作系统更好呢?
在当今的IT世界中,服务器操作系统扮演着至关重要的角色。它们是确保服务器能够高效、安全地运行的关键因素。然而,对于许多人来说,服务器操作系统的种类和特点可能是一个复杂的...【详细内容】
2024-01-30    简易百科  Tags:操作系统   点击:(75)  评论:(0)  加入收藏
什么是VPS服务器
VPS服务器是一种虚拟化技术,它将一台物理服务器划分为多个虚拟的独立服务器,每个虚拟服务器都可以拥有自己的操作系统、运行环境、应用程序等。这种技术使得每个虚拟服务器可...【详细内容】
2024-01-30    简易百科  Tags:VPS服务器   点击:(67)  评论:(0)  加入收藏
VPS服务器下载速度慢?这五招帮你提速
VPS服务器下载速度慢可能会让用户感到沮丧,尤其是对于需要大量下载和上传数据的用户。幸运的是,有一些方法可以帮助您提高VPS服务器的下载速度,使您的在线体验更加顺畅。在本文...【详细内容】
2024-01-30  IDC行业观察者    Tags:VPS服务器   点击:(56)  评论:(0)  加入收藏
美国VPS和英国VPS:地理位置对服务器性能的影响
在今天的数字时代,VPS已成为在线业务和网站托管的关键组成部分。然而,选择合适的VPS主机服务时,地理位置通常被忽视,尽管它对服务器性能有着重要的影响。本文将探讨美国VPS和英...【详细内容】
2024-01-26  IDC行业观察者    Tags:服务器   点击:(50)  评论:(0)  加入收藏
如何判断服务器所需带宽:基于业务需求和流量模式的关键考量
在选择服务器时,带宽是一个重要的考虑因素。带宽的大小直接影响到网站的加载速度和用户的访问体验。那么,如何判断服务器需要多大的带宽呢?本文将为你揭示这一关键问题的答案...【详细内容】
2024-01-26  源库科技    Tags:服务器   点击:(71)  评论:(0)  加入收藏
服务器内存空间及IO操作原理解析
服务器的内存空间分为内核空间和用户空间,而我们编写的程序通常在用户空间中运行。在进行读写操作时,我们直接操作的是用户缓冲区,而用户缓冲区的内容来自于内核缓冲区。这种内...【详细内容】
2024-01-23  王建立    Tags:服务器   点击:(42)  评论:(0)  加入收藏
如何在Java环境中安装Nginx?
1. 下载Nginx:首先,前往Nginx官方网站(https://nginx.org/en/download.html)下载新版本的Nginx。选择适合您操作系统的版本,通常有Windows、Linux和Mac等不同操作系统的版本可供...【详细内容】
2024-01-22  敲代码的小动    Tags:Nginx   点击:(58)  评论:(0)  加入收藏
服务器证书和SSL证书有啥区别?
在互联网经济时代,随着越来越多的信息以及合作都是从企业官网开始的,因此绝大多数企业都会为自己的网站配置SSL证书,以提高安全性。在接触SSL证书时,也有很多人称之为服务器证书...【详细内容】
2024-01-10  安信SSL证书    Tags:服务器证书   点击:(65)  评论:(0)  加入收藏
宝塔面板怎样部署java项目?
宝塔面板怎样部署java项目?在使用宝塔面板部署Java项目之前,需要确保已经安装了Java Development Kit (JDK)。接下来,将介绍如何使用宝塔面板来部署Java项目的步骤。步骤一:安装...【详细内容】
2024-01-09  西部数码    Tags:宝塔面板   点击:(103)  评论:(0)  加入收藏
站内最新
站内热门
站内头条