vue.js - VueJS 应用程序没有被 nginx 正确代理
问题描述
我正在尝试nginx
在本地计算机上设置代理服务器并将两个单独的端点转发到两个VueJS
在我的本地机器上运行的两个应用程序。
此nginx
代理服务器侦听端口 5000 并监视/app-1
和分别监视/app-2
哪些代理localhost:8080
,localhost:8081
即:
localhost:5000/app-1
将被转发到localhost:8080
和localhost:5000/app-2
将转发至localhost:8081
这是我在nginx.conf
文件中的内容:
server {
listen 5000;
server_name localhost;
location /app-1/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:8080/;
}
location /app-2/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:8081/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
上面的代码出现错误:
似乎VueJs
找不到应用程序的入口文件。是否需要添加某种相对路径location
?
我设法使它与一个应用程序一起工作,文件中包含以下内容nginx.conf
:
server {
listen 5000;
server_name localhost;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:8080/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
以上成功代理localhost:8080
,我的Vue
应用程序在浏览器中成功运行,如图所示。
当我尝试替换为时location /
,location/app-1/
我再次遇到同样的404 (Not Found)
错误。
我该如何解决这个问题?
尝试实现上述目标的目的是模拟两个应用程序在我的本地机器上的相同域名上运行,以便两个应用程序可以访问相同的localStorage
. localStorage
包含将JWT
用于进行 API 调用的一个。如果用户已经在 中进行了身份验证app-1
,则他/她不需要app-2
再次进行身份验证。
在生产中,两个应用程序将部署在相同的域名上,因此可以访问相同的localStorage
. 我希望在我自己的本地机器上复制相同的生产环境。
解决方案
从图像中的错误来看,页面似乎能够加载,然后它尝试从中加载app.js
,这很奇怪,因为您在和http://localhost:5000/js/app.js
下提供 Vue.js 应用程序。/app-1/
/app-2/
所以我认为问题在于您如何服务/构建 Vue.js 应用程序而不是 nginx 代理问题。
如果您正在使用Vue CLI
,
默认情况下,Vue CLI 假定您的应用程序将部署在域的根目录
您需要将publicPathvue.config.js
设置为/app-1/
和/app-2/
。
我希望这会有所帮助。
推荐阅读
- javascript - 从 onclick 方法将 id 传递给函数
- c# - 在 .netcore 中使用流利的 nhibernate 访问多个数据库
- node.js - 尽管声明了管理员,但显示“意外的令牌管理员”错误
- python - 如何将“for x in myresult: print(x[0])”的结果转换为变量
- java - JNI返回Java对象,是否可以返回本地引用,还是必须是全局的?
- python - 如何在浮点数组中找到“dtype('O')”?
- python - 在 Python 中计算 100 岁时的年龄,奇数只到 99 岁?
- c# - 如果两个页面相等,如何检查它们?
- python-3.x - 使用 python 使用 Airflow 挂钩从 Hive 获取列名到 CSV
- azure-devops - 有没有办法在 Azure Boards 中导出自定义流程?