美文网首页Jenkins/nginx
问题解决1:nginx反向代理丢失js、css问题

问题解决1:nginx反向代理丢失js、css问题

作者: 木头就是我呀 | 来源:发表于2020-02-29 17:36 被阅读0次

我们已经可以通过 http://118.25.194.49:8080 访问到我们的项目,此时,假设我们要上线,8080端口暴露着实不好看,我们希望是类似http://118.25.194.49/demo1/这样的格式进行访问项目,看着比较舒服,这样怎么做呢?

1. 使用反向代理

server {
    listen       80;
    server_name  localhost;
    location /demo1 {
        proxy_pass   http://118.25.194.49:8080/;
    }
}

看似这种方法直接就解决了这个痛点问题,这个配置文件的含义就是将/demo1的请求转发到8080端口上,十分完美,我们重启nginx试一下效果:

image.png

js、css文件都找不到了

image.png

我们发现,项目中的静态文件为啥都直接去根目录去找呢?问题出在打包的配置文件上:
我们本地执行打包命令yarn build,然后去根目录的dist文件夹中查看index.html文件,发现下面的情况:

image.png

发现所有的外部文件都是去根目录开始的,这就会产生上面的问题。

2. 解决产生的问题

解决问题肯定是去整理刚才的路径,我们这里修改配置文件中的发布路径

image.png

对于新版本的vue,需要新增vue.config.js,并添加如下配置,产生的效果是一样的


image.png

这时候,再次打包,看一下dist里面的index.html文件,发现已有了效果。

image.png

此时,提交代码到github,服务器拉下来代码,运行,查看效果,成功。

image.png
  • 一些补充:

其实用相对路径来解决这个问题不是最好的方案,甚至vue-cli4.x之后,就不支持将publicPath设置为./了。
看了公司的项目Nuxt框架的推荐,均是推荐使用绝对路径来设置publicPath

  1. 首先你可以设置:
    assetsPublicPath: http://www.你的网站.com/项目名/ 这样子,这样设置后,就可以将项目进行打包,重启nginx即可。
  2. 其次,可以对项目进行cdn优化
    assetsPublicPath设置为cdn地址,进行打包后,只将index.html文件或一些必要文件放到服务器上,其余js、css、字体文件都可以上传到cdn上,这样不仅可以减轻服务器压力,而且可以按区域内容分发,加快静态资源加载速度,从而加速首页打开速度。

相关文章

网友评论

    本文标题:问题解决1:nginx反向代理丢失js、css问题

    本文链接:https://www.haomeiwen.com/subject/emqmhhtx.html