现在有两个网站需要部署,域名分别是: xyz.com,xyz.com/science 网站资源分别放在 ng 下的, admin 和 science 目录
ng 的配置如下:
server {
listen 80;
server_name xyz.com; #
location / {
root /usr/share/nginx/admin;
}
location /science {
alias /usr/share/nginx/science;
}
}
前端有一些静态资源需要加载,静态资源放在网站资源目录下的 assert 目录中,比如
/usr/share/nginx/admin/assert
/usr/share/nginx/science/assert
前端配置静态文件 src 的路径是 /assert/xxx.js
当访问 xyz.com/science
网站时,页面请求静态资源直接请求 xyz.com/assert/xxx.js
但是正确的请求应该是: xyz.com/science/assert/xxx.js
为什么浏览器发出请求的时候会丢掉二级目录呢
以及 ng 要怎么配置呢
感谢各位大佬
1
dingdangnao 246 天前
你写 assert/xxx.js 呗
|
2
alexsz 246 天前 1
我不是前端,我司有类似的项目,让前端同学在 science 项目打包时加个路由前缀就可以了
|
3
zx9481 246 天前
什么前端 vue 还是?
|
4
zack5337 246 天前 1
打包配置文件设置 publicPath: /science
|
5
javalaw2010 246 天前 1
因为打包工具并不知道你的网站部署的时候是在二级目录下,这个跟 ng 配置关系不大,主要是要修改打包的配置,解决方案参考 #2 。也许你可以试试把`/assert/xxx.js`改为`assert/xxx.js`。
|
6
dier 246 天前 1
我的建议是写两个 server ,用不同的 server_name 来区分。两个 server 中都只配置 localtion /
|
7
namelesswryyy 246 天前
/assert/xxx.js 绝对路径,
assert/xxx.js 相对路径 改成相对路径试试 |
8
lalalaqwer 246 天前 1
不知道你网站前端什么写的,放在 xyz.com/science 下的网站静态打包的时候静态资源可以配置一个 basePath 为 /science ,不同工具配置可能有点差别,搜搜就知道了
|
9
florentino OP 感谢各位大佬,问题解决了, vue 前端打包的时候要支持 部署二级目录
可以参考: https://www.cnblogs.com/architectforest/p/16241060.html 发现 V2 有类似问题,也可以参考: https://www.v2ex.com/t/1024262#reply14 |
10
hueralin 246 天前
据我了解,第二个项目的打包路径要改成 /science ,这样打包出的文件路径前缀才是 /science ,否则都是 /,nginx 找不到
|
11
lc5900 246 天前
我之前也是折腾半天,最后换二级域名了,搞个通配符证书,用路径区分挺多坑的
|