用Nginx将前端Vue项目部署到云服务器(含代理实现请求跨域)

这篇具有很好参考价值的文章主要介绍了用Nginx将前端Vue项目部署到云服务器(含代理实现请求跨域)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录使用Nginx将纯前端的Vue3项目部署到阿里云服务器(Ubuntu 22.04)上,包含通过Nginx代理实现跨域请求、以及个人踩坑记录~

1.安装下载Nginx

执行下列命令安装:

apt-get install nginx

安装完成后查看nignx版本,显示版本信息则说明安装成果

root@iZbp1e23w2p1t5zrsvqb63Z:~# nginx -v
nginx version: nginx/1.18.0 (Ubuntu)

启动nginx,如正确启动,则不会出现任何提示信息。

root@iZbp1e23w2p1t5zrsvqb63Z:~# nginx
root@iZbp1e23w2p1t5zrsvqb63Z:~# 

nginx启动成功后打开服务器的外网面板地址,可以看到如下界面,至此成功大半!!

vue3项目部署到服务器,vue,nginx

2. 打包vue项目并上传到服务器上

在VS Code中打开已完成的前端Vue项目,输入如下命令进行打包,打包完成后再当前目录下出现名为dist文件夹,即为需要上传到服务器上的文件夹。

npm run build
# 具体是否为build命令需查看项目目录下的package.json文件(一般都是辣)

可以打开安装好的宝塔界面,借助宝塔面板将dist文件夹上传到服务器的某个目录项,此处为 "home/FloraThumb/"。

3. 修改Nginx配置

首先需要先暂停Nginx服务(一定要做!!!)

root@iZbp1e23w2p1t5zrsvqb63Z:~#nginx -s stop
root@iZbp1e23w2p1t5zrsvqb63Z:~# 

使用如下命令查看Nginx配置文件路径:

nginx -t

如下图所示,本机的配置文件为 /etc/nginx/nginx/confvue3项目部署到服务器,vue,nginx

使用vim命令打开配置文件进行编辑:

vim /etc/nginx/nginx.conf

http{}中添加服务server,如下所示

http { 
    
    #前面扒拉扒拉都不要动
    
    include /etc/nginx/conf.d/*.conf;  #原有别动
    include /etc/nginx/sites-enabled/*; #原有别动

    #下面是需要手动添加的:++++++++++++++++++

    server {
        listen      80 ; #可访问端口号,默认是80,也可设置为其它
        server_name  47.98.101.114;  #云服务器可访问外网链接
        #access_log  logs/host.access.log  main;
        location / {
            root   /home/FloraThumb/dist; #这里写vue项目在云服务器中的地址
            index  index.html; #这里是vue项目的首页,需要保证dist中有index.html文件
        }
        error_page   500 502 503 504  /50x.html;#错误页面    
    }

}

nginx.conf文件配置完成后,需要重新加载配置文件,执行如下命令

sudo nginx -c /etc/nginx/nginx.conf

完成后重新开启Nginx服务:

nginx -s reload

此时点击配置文件中所设置的连接: server_name: listen(ip:port)即可访问部署完成的网页,如此处需要访问  http://47.98.101.114:80

大功告成啦~~~

4. 关于通过Nginx代理实现跨域请求

浏览器的同源策略:组织一个域的JavaScript脚本和另一个域的内容进行交互。

所谓同源(即同一个域),就是两页页面具有相同协议(如http协议)、主机host和端口号port。

当在前端vue项目中需要调取受同源策略保护的Web API时,即发生所谓跨域请求,此时发送不成功,一般可以采用ajaxjsonp发起跨域请求,而对于vue项目的axios不支持jsonp请求,可以选择安装'vue-jsonp'依赖项或修改vue.config.js文件来发起跨域请求,下文主要讲后者的实现。

4.1 开发环境

在开发环境下,可以通过修改Vue项目的vue.config.js文件来实现跨域请求。

下述代码中设置了两个代理请求,一个是 '/api',代理的目标地址是  https://trefle.io;另一个是'/baidu',代理的目标地址是即百度领域翻译API  http://api.fanyi.baidu.com/api/trans/vip/fieldtranslate

module.exports = {
  devServer: {
      proxy: {
        '/api': {   // '/api'是代理标识,用于告诉node,url前面是/api的就是使用代理的
            target: "https://trefle.io", //目标地址,一般是指后台服务器地址(只到域名即可)
            changeOrigin: true, //是否跨域
            // pathRewrite: {  //重写路径(将带有api换成空字符串):此处不需要
            //   '^/api': ''
            // }
        },
        '/baidu': { // 
          target: "http://api.fanyi.baidu.com/api/trans/vip/fieldtranslate", //目标地址,一般是指后台服务器地址(只到域名即可)
          changeOrigin: true, //是否跨域
          pathRewrite: {  //重写路径(将带有/baidu换成空字符串)
            '^/baidu': ''
          }
        },

    }
  }
}

changeOrigin: true 代表支持跨域(必写);

pathRewrite代表重写路径,是可选项,根据需求选择(/api无需重写,而/baidu进行重写);

无需重写路径以代理'/api'为例,在发起请求过程中,对于url中以'/api'开头的请求,会将vue.config.js文件中'/api'对应的target目标地址连接到请求头部,即若请求url为“ /api/v1/species/”,则实际会将请求发送到 https://trefle.io/api/v1/species,从而实现跨域请求;

export function getSpecialDetail(data){
    return request({
        url:"/api/v1/species/" + data.id ,
        method:"GET",
        headers:{
            'Authorization': "<我的token>",  #此处为token参数
        }
    })
}

需要重写路径以代理'/baidu'为例,在发起请求过程中,对于url中以'/baidu'开头的请求,会将vue.config.js文件中'/baidu'对应的target目标地址连接到请求头部,即若请求url为“ /baidu”,则现将target串联到url头部  http://api.fanyi.baidu.com/api/trans/vip/fieldtranslate/baidu,此时因为代理 /baidu 设置重写路径,将'/baidu'重写为空字符,则实际请求发送到http://api.fanyi.baidu.com/api/trans/vip/fieldtranslate,从而实现跨域请求;

export function translate(data){
    return request({
        url:'/baidu',
        headers:{
            'Access-Control-Allow-Origin':'*',
            'Content-Type':'application/x-www-form-urlencoded'
        },
        method:"POST",
        data:data,
    });
}

4.2 部署环境

当按照步骤1~3将vue项目部署到云服务器上时,此时在4.2中进行的代理操作将会失效,需要额外对nginx进行如下代理配置。

依旧需要先关闭nginx,在修改配置文件 /etc/nginx/nginx.conf ,如下为代理添加相关配置

server {
        listen      80 ;#自己设置端口号
        server_name  47.98.101.114;#自己设置项目名称
        #access_log  logs/host.access.log  main;
        location / {
            root   /home/FloraThumb/dist;#这里写vue项目的所在地址
            index  index.html;#这里是vue项目的首页,需要保证dist中有index.html文件
        }
        
        #添加代理配置

        location /api{
            proxy_pass https://trefle.io;
        }
        location /baidu {
            proxy_pass http://api.fanyi.baidu.com/api/trans/vip/fieldtranslate;
        }
        error_page   500 502 503 504  /50x.html;#错误页面
    
       
    }

完成后依旧重新加载配置文件

sudo nginx -c /etc/nginx/nginx.conf

再重启nginx服务即可

nginx -s reload

参考链接:

 解决nginx:[error] invalid PID number ""in"/run/nginx.pid"

 快速部署vue项目

 查找nginx配置文件文章来源地址https://www.toymoban.com/news/detail-848777.html

到了这里,关于用Nginx将前端Vue项目部署到云服务器(含代理实现请求跨域)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端如何将项目部署到服务器(Nginx)

    我们在会开发项目的同时,也应该了解一下前端是如何部署项目的; 使用Xshell连接服务器,既然想要在服务器上面放静态资源,像HTML,js等,就需要安装静态资源服务器。静态资源服务器有Apache和Nginx,这里我们选用nginx。 找到安装包Nginx安装路径,并在目录下进行解压。 进

    2024年02月01日
    浏览(35)
  • windows怎么部署项目到云服务器

    要将项目部署到云服务器,可以按照以下步骤进行操作: 1. 在云服务提供商上创建一个云服务器实例,并确保已经将其配置和启动。 2. 在本地开发环境中将项目打包成可执行文件或者jar包,并确保项目能够正确运行。 3. 使用远程连接工具(如SSH、RDP等)登录到云服务器。 4. 在

    2024年02月14日
    浏览(40)
  • 部署 ssm 项目到云服务器上(购买云服务器 + 操作远程云服务器 + 服务器中的环境搭建 + 部署项目到服务器)

    推荐的做法:买一个云服务器。(主要是要有一个外网 IP) 好处:① 方便 (如果自己搭建,就比较麻烦)、② 便宜 (如果只是为了学习使用,最低配置的服务器完全够用,不到 50 元就能买一年使用权)、③ 有外网 IP ,可以部署项目(有了外网 IP,我们部署的项目,别人

    2024年02月11日
    浏览(51)
  • vue项目通过nginx部署到服务器

    部署的服务器是阿里云买的,使用finalShell根据账号秘密链接服务器即可 找到/user/local/nginx/conf/下面的nginx.conf文件进行配置,这里单独新建一个finace.conf文件,配置后再导入到nginx.conf文件,便于管理 这个Nginx服务器配置设置了一个监听端口为8081的服务器,服务器名称设置为127.0.0.

    2024年03月11日
    浏览(43)
  • Vue项目nginx服务器部署刷新页面404错误

    最近想自己做点小项目练手,前端用的是vue框架,用nginx当做服务器来部署。但是当部署完成后,遇到了刷新页面和打开新页面报404错误的问题 问题就像上面描述的一样,刷新页面和打开新页面都是报404错误。 先说最终解决办法,在nginx的配置文件的location中改一下设置方式

    2024年02月17日
    浏览(42)
  • 手动将Java SpringBoot项目部署到云服务器上(使用docker)

    本文记录一下我作为一个小白如何通过docker手动将java springboot项目部署到云服务器上(以腾讯云的轻量应用服务器为例)。 但是我个人还是推荐安装一个宝塔面板部署 ,真的全程自动化,非常方便,网上有很多相关的教程可以搜搜看。所以我写这个教程其实只想记录一下我

    2024年04月25日
    浏览(32)
  • PHP项目部署到云服务器(CentOS+HTTP+PHP+MYSQL)

    如何将写好的项目部署到云服务器,让外界可以通过互联网访问项目网站。以下使用的是腾讯云服务器操作,系统环境为CentOS7.9。 打开腾讯云官网,注册好自己的平台账号。如果是新人的话去新人专区购买服务器,性价比高。 这里可以选的服务器有轻量云服务器、云服务器

    2024年02月05日
    浏览(38)
  • java+vue 前后端项目部署 服务器部署流程 包括nginx软件安装,服务器选择,域名配置

    现在的web端项目大多数都是java+vue前后端分离的项目,都需要分开来部署,基本上都是部署在云服务器上的,这就涉及到选择和购买服务器,以及安装环境,本文记录的是在机器上安装软件,不在docker和宝塔上安装。下面请看详细的步骤吧,都是自己在工作中使用过的,本人

    2024年02月13日
    浏览(48)
  • 【前端部署】vue项目打包并部署到Linux服务器

    在vs code中打开vue前端项目文件夹,在终端中输入 npm run build ,打包完成后,在前端项目文件夹中会生成一个名为 dist 的文件夹,如下图所示: dist文件夹打开如下所示: 打开服务器终端,在终端中输入以下命令,下载nginx安装包。 其中nginx版本可以自己选择,具体版本可查看

    2024年02月06日
    浏览(47)
  • idea集成Docker + Docker部署SpringBoot项目到云服务器 保姆级教程

    本人使用资源: 云服务器主机:腾讯云宝塔linux 操作系统:OpenCloudOS 8.6 本文分别讲解了: 1、idea如何集成并使用docker 2、springboot项目如何引入Docker管理 3、如何将一个springboot项目使用Docker打包为一个镜像 不仅讲解了方法,还列出了在整个过程中会遇到的一些问题和注意事项

    2024年02月06日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包