linux nginx部署vue项目 实现跨域

最近有时间研究了下前端项目如何在nginx服务器下进行部署,折腾了两天总算有所收获,汗~~

所以就想着写篇文章来总结一下,主要包括以下三个方面:

 

1、打包好的vue项目如何进行部署。

2、如何反向代理后端服务接口。

3、vue项目二级访问目录在nginx下的配置。

 

说明:nginx服务器的安装及vue项目如何进行打包不在本文的讨论范围,后面的所有实践说明都是基于个人的本地服务,和项目真实的应用环境稍微有点差别(其实这点差别可以忽略)。

 

一、如何部署vue项目。

假设我们打包好的项目地址为:d:\demo\dist,然后在nginx安装目录下的conf文件夹中找到配置文件nginx.conf并用文本打开,在配置文件的http模块内加入以下配置

复制代码

server {
        listen       8011;
        server_name  127.0.0.1;
		
        location / {
                root D:\demo\dist;
                try_files $uri $uri/ @router;
                index index.html index.htm;
        }
}

复制代码

大家可能会看到http模块下已经存在server模块,但这个并不影响,因为server模块可以配置多个;其中listen是自定义的端口号,server_name一般都是nginx服务器的IP,最关键的是在location的root属性配上打包好的项目地址,index属性对应的是默认的页面名称;配置完成后启动nginx服务,通过http://127.0.0.1:8011就可以访问到我们的项目页面。

 

在上述配置完成后我们虽然可以访问到项目页面,但通常由于跨域等原因导致后台接口却无法调通,这时我们可以使用nginx代理来解决。具体操作是前端所有请求都使用相对地址,假设都以“/api”开头,说明一下“/api”并不是接口URL中真实存在,只是为了统一代理才加上的,然后在上述server模块中添加以下配置

location /api/ {
        rewrite ^/api/(.*) /$1 break;
        proxy_pass http://10.10.10.10:9001;
}

属性proxy_pass对应的就是后台服务地址,然后重启nginx服务后整个项目运行正常。

 

实现跨域访问 到此即可

 

 

二、后端服务接口的代理配置。

先看下面这段配置

复制代码

server {
	listen       8012;
        server_name  127.0.0.1;
		
        add_header Access-Control-Allow-Origin * always;
        add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS always;
        add_header Access-Control-Allow-Credentials true always;
        add_header Access-Control-Allow-Headers DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,x-auth-token always;
	add_header Access-Control-Max-Age 1728000 always;
		
        if ($request_method = OPTIONS) {
            return 304;
        }
		
	location / {
		proxy_pass http://10.10.10.10:9001;
        }
}

复制代码

http://127.0.0.1:8012就可以作为后台服务地址的一个代理地址,中间的那些配置是用来处理跨域问题,这样就可以使用nginx代理地址来解决前文提到的接口调不通的问题。

 

nginx反向代理的另一个应用场景就是针对于微服务开发,也就是后台有多个服务地址的情况,我们可以使用nginx把多个地址映射到同一个IP+端口下,假如后台有三个微服务地址配置如下

复制代码

server {
	listen       8012;
        server_name  127.0.0.1;
		
	location /u1/ {
		proxy_pass http://10.10.10.10:9001/;
        }
		
	location /u2/ {
		proxy_pass http://10.10.10.10:9002/;
        }
		
	location /u3/ {
		proxy_pass http://10.10.10.10:9003/;
        }
}

复制代码

前端项目就可以通过http://127.0.0.1:8012/u1的方式访问后台请求,需要注意的是proxy_pass的配置地址必须以“/”结尾。

 

三、如何配置vue项目的二级访问目录

一开始个人的想法是仍然按照前文提到的先部署好vue项目,然后再配置一次代理,添加二级目录代理访问已部署好的项目地址,具体配置如下

复制代码

server {
	listen       8013;
        server_name  127.0.0.1;
		
	location /test/ {
		proxy_pass http://127.0.0.1:8011/;
        }
}

复制代码

想着通过http://127.0.0.1:8013/test/就可以访问到我们之前部署好的项目,但事实并非如此,囧~

 

其实思路并没有错,只是少了点配置(不是nginx的配置,而是vue项目的配置),首先需要给vue项目路由添加“base”字段,

 

然后在打包时要修改“assetsPublicPath”字段值,vue-cli3对应“publicPath”字段,

配置完成后重新打包,就可以通过http://127.0.0.1:8013/test/正常访问项目了。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学生参加学科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,学科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,学生不仅能够深入学习相关专业知识,还能够接触到最新的科研成果和技术发展趋势。这有助于拓展学生的学科视野,使其对专业领域有更深刻的理解。在竞赛过程中,学生通常需要解决实际问题,这锻炼了他们独立思考和解决问题的能力。 其次,学科竞赛培养了学生的团队合作精神。许多竞赛项目需要团队协作来完成,这促使学生学会有效地与他人合作、协调分工。在团队合作中,学生们能够学到如何有效沟通、共同制定目标和分工合作,这对于日后进入职场具有重要意义。 此外,学科竞赛是提高学生综合能力的一种途径。竞赛项目通常会涉及到理论知识、实际操作和创新思维等多个方面,要求参赛者具备全面的素质。在竞赛过程中,学生不仅需要展现自己的专业知识,还需要具备创新意识和解决问题的能力。这种全面的综合能力培养对于未来从事各类职业都具有积极作用。 此外,学科竞赛可以为学生提供展示自我、树立信心的机会。通过比赛的舞台,学生有机会展现自己在专业领域的优势,得到他人的认可和赞誉。这对于培养学生的自信心和自我价值感非常重要,有助于他们更加积极主动地投入学习和未来的职业生涯。 最后,学科竞赛对于个人职业发展具有积极的助推作用。在竞赛中脱颖而出的学生通常能够引起企业、研究机构等用人单位的关注。获得竞赛奖项不仅可以作为个人履历的亮点,还可以为进入理想的工作岗位提供有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值