关于部署vue项目在Linux上的两种方式tomcat以及nignx(3)使用nignx进行部署

2023-11-01

阿丹有话说:

        前两篇文章主要讲解了将vue中tomcat部署研究了。解决了在后台代码中通过过滤器来解决跨域问题。后期会继续出在tomcat中的代理配置等。本篇文章来将vue项目部署在nignx上,并且通过反向代理来解决跨域请求以及请求转发。

使用nginx来部署vue项目

 首先我们再来了解一下nginx

        Nginx是一款高性能、高可靠性的反向代理服务器,它可以作为HTTP服务器、负载均衡器以及邮件代理,在Web服务器领域得到广泛应用。Nginx有着优秀的多进程架构,支持异步非阻塞I/O模型,同时占用内存少,响应速度快,对于高并发量的网络环境有着较好的适应性。 Nginx的配置简单易懂,可扩展性强,在大型网站中极其受欢迎。它可以处理静态资源的请求,但更为重要的是,它可以缓存请求和加速静态内容的传输。Nginx还支持各种标准的Web服务协议,包括HTTP、HTTPS、SMTP和POP3等。总的来说,Nginx是一款开源、高性能、灵活、稳定的Web服务器软件,适用于各种规模的网站和Web应用程序。

主要配置思路

1、将vue项目打包(如何打包查看关于部署vue项目在Linux上的两种方式tomcat以及nignx(1)使用tomcat进行部署_艺舟先生的博客-CSDN博客

2、将打包好的dist文件夹上传到nginx文件夹中的html文件夹下面。

3、找到nginx的配置文件,在conf下的nginx.conf配置文件中写相关的配置文件。

首先先确保你的服务器上安装了nginx,(后期阿丹会附上链接)。使用指令

whereis nginx

 

 会返回给你nginx的位置。

找到你对应nginx的项目存放文件夹

路径是在上面的返回值上加上html.展示一下文件夹的关系。

 

这里的dist就是我上传的文件夹。

 超级重点!开始更改配置文件!

阿丹贴士:

        个人感觉修改nginx的配置文件是上传部署nginx的重点。

默认配置文件:


#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;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost:8080;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
	    proxy_pass http://127.0.0.1:8080;
            index  index.html index.htm;
        }

        #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;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

 对配置文件重点进行解读:

        

server这个模块是我们要配置的重点。

这个配置文件也是一个Nginx的服务器块(Server Block)。这个块定义了服务器监听的端口、服务器名称、请求的资源和如何处理请求。

首先是“listen 80”,它指示Nginx监听本地主机的80端口。而“server_name localhost:8080”则定义了服务器名称。这个名称包含了端口号,表示只有当请求的主机名为localhost且端口号为8080时才能匹配。

location块定义了如何处理路径中的请求。location /代表服务器的根路径的请求,root html意味着在Nginx中,它是服务器物理路径下的html。proxy_pass指令里是要代理的目标URL,通常为上游服务器。该配置中,它是将请求发送到“http://127.0.0.1:8080”,即代理的上游服务。

该配置文件解读让我们可以了解到如何通过Nginx实现反向代理,将发送到Nginx的请求转发到其他Web服务器或应用程序,以提高Web应用程序的可伸缩性和性能。同时,这个配置也展示了如何在Nginx中使用根路径、代理传输和索引文件的相关指令以处理请求。

 所以我们要使用nginx来反向代理我们的vue项目的时候就需要配置和我们vue项目对应的反向代理

nginx需要完成操作

 在后端已经写好过滤器允许跨域访问的情况下。可以参考这篇文章中写过滤器写法。

关于部署vue项目在Linux上的两种方式tomcat以及nignx(2)使用tomcat进行部署(1)解决上篇tomcat部署中问题_艺舟先生的博客-CSDN博客

现在需要nginx完成,监听服务器上的端口号对应的我们的项目。当这个端口号发送以“前台设置代理字段”为路径发送请求的时候。nginx就会拦截这个请求,并重写路径,并将他转发到我们处理请求的路径下,这样就能完成反向代理来隐藏我们的请求路径。

阿丹的前端项目接口介绍

能看到我前端发送的请求都是使用了/api这个公共的路径。

那么我们就需要在nginx中设置监听有/api的请求路径,并将请求重写。

阿丹nginx的配置文件

给大家提供一下阿丹写好的配置文件,通过测试配置文件。

提供一些大家可能会用到的指令nginx

nginx -t

用于测试Nginx的配置文件是否正确,若正确则输出配置文件中加载的模块信息和语法规范。

nginx

 用于启动Nginx服务器,执行此命令后Nginx开始监听并处理来自客户端的请求。

nginx -s stop

 用于停止Nginx服务器,执行此命令后Nginx将解除绑定该端口并且停止处理来自客户端的请求

nginx -s reload

 用于重载配置文件,执行此命令后Nginx将会重新读取配置文件,重新载入新的配置,同时继续处理来自客户端的请求。

nginx -s quit

 用于优雅的关闭Nginx服务器,执行此命令后Nginx将处理完当前正在处理的请求后,再关闭服务。

如果在运行的时候报错,nginx显示他监听的端口号已经被占用了,那么使用一下我提供的指令查看对应的使用该端口号的进行然后使用kill来结束杀死,在尝试重启ngingx就可以了。

 使用lsof命令。lsof是一款常用的系统级别命令,可以列出系统打开文件管理表信息。可以使用以下命令查看指定端口上运行的进程:

lsof -i :<端口号>

 使用netstat命令。netstat是Unix/Linux系统的一个命令行工具,用于显示各种网络相关信息。以下命令可以查看指定端口号的运行进程:

netstat -lnp | grep <端口号>

 以上两种方法都可以用来查找指定端口上运行的进程。如果要终止指定端口号的进程,可以使用kill命令,并使用PID进行杀死。例如:

kill <PID>

指令注意:

这些命令可以在终端中执行,一般的,Nginx的可执行文件路径位于/usr/sbin/nginx或者/usr/local/nginx/sbin/nginx,具体路径需要根据安装的位置来定。同时,需要注意,在执行停止和重启操作之前,确保Nginx已经启动,可以使用ps命令或者systemctl status nginx命令来检查Nginx是否已经在运行中,以确保执行正确的操作。

阿丹会给大家提供讲解。

   server {
        listen       10001;
        server_name  XXX.XXX.XXXX:10001;#运行该项目的ip地址

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html/dist;
            index  index.html index.htm;
        }

    #监听如果有/api的请求路径。开始反向代理
        location /api {
            root   html;
	    proxy_pass http://XXX.XXX.XXXX;
	 fastcgi_pass   XXX.XXX.XXXX:10001;
            index  index.html index.htm;
        }

关键字段解释:

        root   html/dist;

#访问10001端口号时首页面,因为之前我们将vue打包好后,index.html页面在dist文件夹下面,并且我们将dist文件夹上传到了html文件夹中,这个字段指定了首页

         proxy_pass http://XXX.XXX.XXXX 后面是我们的后台服务器的IP地址

这行代码的意思是将当前请求转发到http://XXX.XXX.XXXX。
它是在Nginx中使用代理服务器的一个重要指令。
通常情况下,该命令将很有用,因为它可以将接收到的客户端请求代理到远程Web应用程序服务器上。
这是在Web应用程序中实现完全分离的常见模式,因为代理服务器可以为Web应用程序WEB服务器处理负载均衡,
同时提高系统的安全性和可伸缩性。
当Nginx接收到请求并被配置为使用proxy_pass来转发请求时,它将这些请求内容发送到所定义的URL地址上,
接收响应并将其发送回给客户端浏览器。

fastcgi_pass XXX.XXX.XXXX:10001

这行代码的意思是将当前请求以FastCGI协议的方式转发到IP地址为XXX.XXX.XXXX,端口号为10001的FastCGI服务器上处理。当Nginx接收到请求并且FastCGI服务器已经启动时,它将这些请求分派到FastCGI服务器,FastCGI服务器将其处理并将结果返回给Nginx。FastCGI是比CGI更高效的协议,它提供了一种通用接口,允许Web服务器代理请求并将它们传递给后端Web应用程序。这种代理模式称为FastCGI代理。

解释一下为什么是10001,是因为后台写的代码的网关的端口号是10001,具体要根据自己后台端口号来进行更改。

最后:一定要注意在使用的时候开放自己的对应端口号!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于部署vue项目在Linux上的两种方式tomcat以及nignx(3)使用nignx进行部署 的相关文章

  • 如何让 Google Apps 脚本进行 SHA-256 加密?

    我需要使用文本输入 1 轮 十六进制输出 SHA 256 加密来加密字符串 这应该是一个长度为 64 的字符串 我在 Google Apps 脚本文档中尝试过的每个 SHA 256 加密模块都会返回一组数字 例如 function SHA2
  • 使用浏览器内的 JS 数值求解三角方程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 给定变量值s v and h 并给定一个库 例如数字 js http www numericjs com index php我怎样才能用数
  • javascript函数知道它的名字吗

    我有一个名为 getItem 的函数 我想使用其中的代码读取该函数的名称 这可能吗 function getItem var functionName how do I read the function name alert functi
  • 流媒体性能 - Canvas 与

    我正在开发一个应用程序 需要通过 webSocket 连接以每秒至少 30 帧的速度持续传输图像 我遇到了一些性能问题 并希望尽我所能进行优化 我想知道使用不断更新的图像之间的性能差异是什么 就像这样 img src someDynamic
  • 如何使用 console.log 省略文件/行号

    如今 您可以在 Chrome 的控制台中编写非常好的东西 查看this https developer chrome com devtools docs tips and tricks关联 我也做了一个截图 正如您在屏幕截图中看到的那样 文
  • Chart.js - 如何将数组集合推入数据集

    我一直在尝试多种方法将数组集合推送到数据集中 任何人都可以帮助我根据下面的代码将数组推入堆积图表中 这是例子 Codepen 堆叠栏 https codepen io narendrajadhav pen abzpWam JavaScrip
  • 如何更改点击事件上的引导插入符指向方向

    我正在使用 2 3 2 引导程序 因为当我单击菜单按钮时 我可以更改插入符号图标的位置 我需要当我单击图标插入符号向上时 当您单击另一个项目时 插入符号返回到初始状态 这怎么可能 导航代码 div div class container d
  • 每次页面重新启动时,Firebase.auth().currentUser 都会变为 null

    我正在使用 firebase 身份验证与 vue 应用程序 每次登录用户后重新启动页面时 currentUser 都会变为 null firebase auth signInWithEmailAndPassword this email t
  • Laravel Vue SPA 与 MPA/SSR

    许多 laravel vue 教程使用 ajax 调用来获取数据 看来 SPA 与 Laravel 是完全隔离的 IE Laravel 只是一个数据 API vue 应用程序也可以简单地托管在第三方外部服务器 例如 AWS S3 上 这是推
  • 使用 jQuery 更改 SVG 元素的“xlink:href”属性

    我正在尝试使用单击事件更改 xlink href 属性 到目前为止它部分有效 这就是我正在做的 HTML a href class ui btn ui corner all ui shadow editIcon style text ali
  • 如何从Web JavaScript应用程序获取桌面C#程序中的变量

    我遇到一个问题 有两个应用程序 一种是 C 中的桌面应用程序 另一种是 javascript 中的 Web 应用程序 运行桌面应用程序中的一些变量或信息需要传输到Web应用程序 有谁知道如何解决这个问题 有人愿意提供更多细节来解决这个问题吗
  • 如何更改 Vuetify 日历日期格式

    我正在尝试在以下 Vuetify 日历上启用输入事件 https github com vuetifyjs vuetify blob master packages docs src examples calendars complex e
  • javascript 中一次仅选中一个复选框

    I have 3复选框 我只想1一次选中的复选框 下面是我的 html 小提琴 JS小提琴 https jsfiddle net n03jLhqa 我想要这个工作在IE8还请建议如何做 这个怎么样 fiddle http jsfiddle
  • 调用不带括号的 javascript 函数

    以下 renderChat 函数用于将消息和图像渲染到聊天板上 该函数内部还有另一个函数 var onComplete function 它完成创建列表元素并将其附加到聊天列表的所有工作 onComplete函数之后就只有这三行代码 img
  • 如何与使用 child_process.spawn 创建的新创建的服务器交互

    我正在尝试为我的私人托管的 反恐精英全球攻势 服务器制作一个前端 当我点击运行服务器时 在前端 一切正常 服务器启动并记录到控制台 但是如何查看服务器IP地址 服务器中的玩家等信息呢 这是我到目前为止运行服务器的内容 router post
  • 用于图形操作的 Javascript 库

    有没有建议的 javascript 替代 pythonpygraph http code google com p python graph or NetworkX http networkx lanl gov 应该注意的是 可视化不是必需
  • 按钮导致页面重新加载

    我在我的页面上使用 html 和 jquery 在我的 html 中 我有一个按钮 单击该按钮将触发一个功能 当页面加载时 我调用文档准备中的主函数 这是我的代码 div div
  • 在 Sublime Text 下获取完整的 JS 自动补全

    我刚刚在 Windows Vista 下安装了 Sublime Text 甚至遵循了中给出的建议这个帖子 https stackoverflow com questions 10636410 modifying sublime text 2
  • $vuetify.goTo 不会在 v-card 组件内滚动

    我有一个带有 v 卡的组件 我在卡片标题区域放置了一个简单的按钮 当我单击时 我看到该方法被触发 它显示在控制台中 但是 卡片永远不会滚动 如果我输错了类名 则会收到错误 因此 goTo 似乎会执行某些操作 因为它找不到该类 没有拼写错误
  • Chrome 中的 addEventListener

    我正在关注 Lynda com 上有关新 DOM 事件模型的教程 这是我正在使用的代码 function addEventHandler oNode sEvt fFunc bCapture if typeof window event un

随机推荐

  • 16瓶药水一瓶有毒,去小白鼠测试哪一瓶水有毒?

    16瓶药水一瓶有毒 去小白鼠测试哪一瓶水有毒 面试的时候有个面试官问我 有16瓶药水 其中一瓶有毒 一只小白鼠喝过之后 一天之后会死亡 要求在少于15只小白鼠的情况下判断出哪一瓶有毒 药水可以兑在一起 小白鼠也可以喝多瓶药水 我在面试的时候
  • Filter——实现权限拦截

    创建Login jsp success jsp error jsp login jsp
  • DAPP开发初探

    前言 最近DAPP的开发貌似很火 学习了区块链的一些知识之后 相信有很多人和我一样 也想了解开发一个DAPP是一个怎样的流程 下面将通过一个简单的栗子来初识一下DAPP的开发流程 届时 我们也将开发出第一个DAPP应用 永存的留言 在线体验
  • OSG第三方库编译之十八:FBX安装(Windows、Linux、Macos环境下安装)

    目录 1 FBX介绍 2 FBX下载 3 Windows下安装 4 Linux下安装 5 MacOS下安装 1 FBX介绍 FBX是Autodesk公司出品的一款用于跨平台的免费三维创作与交换格式的软件 通过FBX用户能访问大多数三维供应商
  • JavaScript 绘制柱状图

    JavaScript 绘制柱状图 index html文件
  • linux下的串口设备管理器,在Linux下用minicom管理串口设备

    因为近期要在外地建立一个网站的发布机房 设备有 防火墙 交换机 负载均衡器 DELL2950 1950服务器 存储设备等 设备都在外地 又没有远程over IP的KVM 所以想利用DELL服务器的 远程管理卡 对服务器进行 带外管理 接着用
  • Git GitHub管理代码

    准备工作 注册一个GitHub账号 电脑安装Git软件 新建仓库 上传代码 进入GitHub网页 登录 新建一个repositoty 只用填写仓库名字 不要勾选Initialize this repository with a README
  • 基于SpringBoot+Vue的家具网站设计与实现

    博主介绍 大家好 我是一名在Java圈混迹十余年的程序员 精通Java编程语言 同时也熟练掌握微信小程序 Python和Android等技术 能够为大家提供全方位的技术支持和交流 我擅长在JavaWeb SSH SSM SpringBoot
  • NACHI机械臂后台SOCKET通讯

    NACHI机械臂后台SOCKET通讯 将机械臂做为服务器 电脑作为客户端 通讯程序在机械臂后台运行 我是先在电脑上写好 导入机械臂文件夹中 转化成机器人语言 再在用户任务这里开启它的任务号码 端口号设置为10030 代码 TCP IP So
  • nginx之配置proxy_set_header

    nginx之配置proxy set header win10客户端请求web服务 win10的ip 192 168 223 1 nginx作为反向代理服务器 192 168 223 136 nginx作为后端web服务器 192 168 2
  • 伦敦金天天实时行情走势图

    伦敦金天天的走势图走势图中都有交易的机会 但高质量的交易信号和进场时机不是经常出现 如果能够过滤掉不佳的交易信号 大家的投资绩效就有望大幅提升 在每天的实时行情走势图中 长影线K线是高胜率的信号 它代表金价拒绝上涨或下跌 伦敦金在实时行情走
  • Spring异步Async和事务Transactional注解

    Spring开发中我们我们常常用到 Transaction和 Async 但这2个注解加在一起很多的开发者不敢用 担心事务不生效 下面我们就仔细讲解一下这2个注解同时运用 文章用3个场景讲述它们之间的运用 相信看完本篇文章你就能灵活运用这2
  • Redis集群详解

    Redis集群详解 Redis有三种集群模式 分别是 主从模式 Sentinel模式 Cluster模式 三种集群模式各有特点 关于Redis介绍可以参考这里 NoSQL 二 Redis Redis官网 https redis io 最新版
  • 基类(父类)private 定义的变量,子类可以使用吗

    基类 父类 private 定义的变量 子类是可以使用的 private变量是传给子类了的但是不可以直接使用 需要我们去用基类里面的函数去初始化或修改继承给子类的private变量 就这样就可以调用private变量了
  • 【camera】【ISP】Lens Shading Correction镜头阴影校正

    ISP LSC 镜头阴影校正 参考 https zhuanlan zhihu com p 389334269 https blog csdn net xiaoyouck article details 77206505 https www
  • MariaDB在Linux环境下的安装及使用

    本操作适合Debain ubuntu和deepin等 此处安装的环境为deepin V23 一 查看是否已安装MariaDB mysql V 二 安装命令 sudo apt get install mariadb server 三 修改配置
  • 第一课:LabView2015中文版安装教程

    1 下载解压缩 双击文件 2015LV WinChn exe 将 点击unzip解压 解压路径为默认为 C National Instruments Downloads LabVIEW Chinese 2015 2 软件成功解压后 自动弹出
  • 了解开发手机的各项参数之显示屏

    现在android手机越来越便宜了 所以开发的话用的最多的还是真机 作为一个程序员 如果拿着手机却在百度找手机的参数 这可不太好 所以 让我们从程序员的角度来了解一下手机显示屏的参数 public class MainActivity ex
  • 云服务器物理机配置,物理机服务器怎么配置

    物理机服务器怎么配置 内容精选 换一换 对于不同的硬件设备 通过在BIOS中设置一些高级选项 可以有效提升服务器性能 服务器上的SMMU一般用来完成设备的地址转换 并且可以实现设备隔离 在虚拟化中很实用 但是在物理机测试场景下 SMMU可能
  • 关于部署vue项目在Linux上的两种方式tomcat以及nignx(3)使用nignx进行部署

    阿丹有话说 前两篇文章主要讲解了将vue中tomcat部署研究了 解决了在后台代码中通过过滤器来解决跨域问题 后期会继续出在tomcat中的代理配置等 本篇文章来将vue项目部署在nignx上 并且通过反向代理来解决跨域请求以及请求转发 使