nginx配置vue前端代理

这篇具有很好参考价值的文章主要介绍了nginx配置vue前端代理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:做一个前后端分离的项目,我这里是vue3 + view + ts创建的前端项目,在前端配置跨域请求。

一、开发阶段
在vue.config.js中配置devserver的proxy进行代理请求配置,然后将所有请求改为/api开头的即可。但是这样配置只在开发阶段起作用。所以在nginx上部署的时候,需要再重新配置请求代理。

vite.config.ts中代码配置如下:

devServer: {
        port:8089, // 启动端口
        open:true,  // 启动后是否自动打开网页
        proxy: {
            "/api": {
                target: "http://192.168.xx.xx:8083", // 如果访问/api就在其前面加target
                changeOrigin: true, // 跨域
                pathRewrite: {
                    "^/api": '' //再把访问路径中的/api替换掉
                }
            }
        }
    },

二、nginx配置代理
因为第一次自己配置nginx(之前都是打包交给后端配置),所以在网上搜索方案,大致一看很简单。于是在nginx.config中做了如下配置:

server {
        listen       8001;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
		
		location /api {
            proxy_pass http://192.168.xx.xxx:8083;
        }

大致一看是没有问题。可是,请求后端接口发送会报404错误。结果百思不得其解,只能百度百度再百度。最后,在 /api 和其代理的路径后面加上一个 / 就好了。虽然说的轻松,但是,在自己试的时候,真的是有点难受。配置文件,不要放过哪怕一个斜杠。
正确配置如下:

    server {
        listen       8001;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
		
		location /api/ {
            proxy_pass http://192.168.31.126:8083/;
        }

三、解决刷新浏览器问题。
配置完上述配置后发现,点击浏览器刷新按钮,会出现无法404页面,无法返回原网页的问题。如图:

vue nginx 设置代理替换路径,vue.js,前端,nginx

需要进行如下配置:

location / {
            root   html;
            index  index.html index.htm;
			
			# 方便界面文件路径查找
			try_files $uri $uri/ @router; 
            index  index.html ;
        }
#因此需要rewrite到index.html中,然后交给路由在处理请求资源
     location @router {
         rewrite ^.*$ /index.html break;
     }

四、匹配文件路径

  • 如果vue-router使用hash模式,则可以在vue.config.js中设置publicPath 为空字符串 (’’) 或是相对路径 (’./’),这样所有的资源都会被链接为相对路径,这样打出来的包可以被部署在任意路径。
  • 如果使用history模式,在生产环境静态资源(打包成chunk的js和css)都链接为 '/'绝对路径,此时直接点击index.html找不到资源,需要使用nginx配合。
location / {
            root   html;
            index  index.html index.htm;
			
			# 方便界面文件路径查找
			try_files $uri $uri/ @router; 
            index  index.html ;
        }

其实此时的配置没起作用,因为资源默认在服务器的根目录下。但是当nginx代理多个服务,且html中的文件结构相对复杂的时候需要进行try_files的相对配置。

五、注意文章来源地址https://www.toymoban.com/news/detail-775320.html

  • 尽管你配置代理了,但是network中显示的始终是配置之前的路由地址(一般是localhost)。所以很容易会误导新手!
  • vue项目中引入静态资源文件(如打印机的配置文件.lbx),应该放在public目录下的static文件夹下。打包后,也会出现在输出文件夹(dist)中的static文件夹下(默认的,可以使用webpack来配置)。代码中使用location.origin拼接static文件夹下路径,即可引入
     

到了这里,关于nginx配置vue前端代理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 已配置vue.config.js中的proxy代理,前端本地环境仍然请求后端出现跨域报错

    已配置vue.config.js中的proxy代理,前端本地环境仍然请求后端出现跨域报错 已配置vue.config.js中的proxy代理,前端本地环境仍然请求后端出现跨域报错 控制台仍然出现cors禁止报错,接口调不通 配置proxy代理解决跨域问题的原理是: 前端工程本地环境会启动一个 express 或 koa 的

    2024年02月01日
    浏览(49)
  • Nginx 【location配置路径详解、反向代理、负载均衡】

    在使用nginx时,我们配置最多的就是location项了。方向代理、负载均衡、静态资源服务器这些高频使用的共能点,几乎主要都在location配置。本文内容将包含上诉功能,并详细介绍location的匹配规则。 location的匹配语法分成两个部分, [] 括号中的时匹配符,决定以何种方式进行

    2024年02月03日
    浏览(35)
  • nginx配置代理多个前端资源

    log: 背景 两套不同的前端使用同一个后端服务,前端使用的Nginx代理的dist包 前端 vue+elementui 后端 Python+flask Nginx代理设置 1.进入Linux机器,whereis nginx 查看Nginx安装位置  2.进到Nginx配置文件下 3.vim nginx.conf  通过多个server管理多个端口前端资源代理 #前端一,端口8080访问就可以

    2023年04月09日
    浏览(32)
  • nginx配置,接收到的请求在代理转发时不包含 /api 路径

    在以上配置中,使用了 rewrite 指令来重写请求路径。它将匹配以 /api 开头的请求路径,并将匹配部分去除,传递给 proxy_pass 指令进行代理转发。这样,当请求到达 Nginx 时,将去除 /api 路径后,转发到后端代理服务器的相应路径。 例如,当访问 http://your_domain_or_ip:8080/api/some/

    2024年02月13日
    浏览(25)
  • nginx配置内网代理,前端+后端分开配置

    我这块安装在了home里面,各位根据自身情况选择 打开nginx.conf文件 在底部查看是否包含这段信息:含义是配置文件包含该路径下的配置文件 include /home/nginx/conf/conf.d/*.conf; # 该路径根据自己的安装位置自行修改 进入conf.d文件夹,创建配置文件,文件名符合规范,后缀一定要是

    2024年01月21日
    浏览(41)
  • VUE 配置本地代理、服务器路径

    2024年03月28日
    浏览(49)
  • Vite 配置代理 Proxy,Vue配置代理,解决前端跨域

    我们在做项目的时候经常会遇到跨域的问题,之所以会出现跨域问题是因为浏览器的同源策略,即协议、域名、端口需要一致,才可以访问服务端的资源。当一个请求地址(服务端的地址)的协议、域名、端口三者之间任意一个与当前页面地址(前端页面地址)不同即为跨域

    2024年02月17日
    浏览(44)
  • Mac Docker安装配置nginx,配置代理前端访问服务器后端访问本地启动项目

     或者直接通过docker客户端查看 --name NginxTest:容器名称 -p 8080:8080:映射端口 -d nginx:设置容器后台运行  docker客户端查看 1)全局块:配置服务器整体运行的配置指令 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,

    2024年02月02日
    浏览(52)
  • 用Nginx将前端Vue项目部署到云服务器(含代理实现请求跨域)

    记录使用Nginx将 纯前端 的Vue3项目部署到阿里云服务器(Ubuntu 22.04)上,包含通过Nginx代理实现 跨域请求 、以及个人踩坑记录~ 执行下列命令安装: 安装完成后查看nignx版本,显示版本信息则说明安装成果 启动nginx,如正确启动,则不会出现任何提示信息。 nginx启动成功后打

    2024年04月12日
    浏览(36)
  • vue.config.js 配置proxy代理

    方案一: 配置文件 文件内容 三个文件分别是三个不同环境使用的,如线上,线上测试,本地测试。我在本地测试时三个文件都配置成了一样。  vue.config.js 配置文件 问题: 控制台显示 400 (Bad Request)或404等问题都是 vue.config.js 配置文件 的 proxy 的配置问题。 主要检查点

    2024年03月15日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包