nginx 配置
server {
listen 90;
server_name localhost; # 服务器域名或 IP 地址
location / {
root D:/nginx-1.24.0/html/dist;
index index.html index.htm projectb.html;
try_files $uri $uri/ /index.html;
}
}
vue配置
const routes = [
{
path: '/',
name: 'Index',
component: Index,
},
{
path: '/scanCodeScreen',
name: 'scanCodeScreen',
component: scanCodeScreen,
},
{
path: '/IndexOld',
name: 'IndexOld',
component: IndexOld,
},
]
const router = new VueRouter({
mode: 'history', //去掉url中的#
base: '/',
routes,
})
export default router
window.open('http://localhost:90/scanCodeScreen', '_blank'); 报错404
改成这样 不要用磁盘路径
server {
listen 90;
server_name localhost; # 服务器域名或 IP 地址
location / {
root html;
index index.html index.htm;
try_files $uri /dist/index.html;
}
}
nginx 如果想支持 SPA 的话需要增加 try_files 你没有,那肯定是不支持 SPA 刷新的。
try_files $uri $uri/ /xxx/index.html;
当你使用 Vue.js 的 history
模式,并且尝试通过 window.open
打开一个新的浏览器标签页或窗口以访问 Vue 路由(如 /scanCodeScreen
),你可能会遇到 404 错误,因为 Nginx 默认配置并不理解 Vue 路由的动态特性。
在 Vue Router 的 history
模式下,所有的路由都是通过 JavaScript 动态处理的,并不会真正请求服务器上的文件。因此,当你尝试直接通过 URL 访问 /scanCodeScreen
时,Nginx 会尝试在配置的 root
目录下找到名为 scanCodeScreen
的文件或目录,但显然这是不存在的,所以返回 404 错误。
要解决这个问题,你需要配置 Nginx 以确保对前端路由的所有请求都返回 index.html
文件,这样 Vue Router 就可以接管 URL 并显示正确的页面。你可以通过修改 Nginx 的 location
块来实现这一点:
server {
listen 90;
server_name localhost;
location / {
root D:/nginx-1.24.0/html/dist;
try_files $uri $uri/ /index.html; # 尝试直接找到文件或目录,否则返回 index.html
index index.html index.htm projectb.html;
}
}
这里的关键是 try_files $uri $uri/ /index.html;
这一行。它会首先尝试直接服务请求的文件($uri
)或目录($uri/
),如果都不存在,则回退到 index.html
。这样,无论请求什么 Vue 路由,Nginx 都会返回 index.html
,然后 Vue Router 会接管并显示正确的页面。
确保你的 Vue 应用已经正确部署到 D:/nginx-1.24.0/html/dist
目录下,并且所有相关的资源文件(如 JavaScript、CSS 等)都可以被正确加载。此外,检查 Nginx 配置文件后,不要忘记重新加载 Nginx 以应用更改。你可以通过运行 nginx -s reload
命令来重新加载 Nginx。
项目使用 nuxt2 写的, 现在进行了 npm run build 打包, 想在生产环境中使用docker部署,部署方式如下 上传项目 将打包后的 .nuxt, static, nuxt.config.js, package.json, node_modules上传至服务器 /home/wwwroot/default 下 (nginx等的配置略) 在项目目录创建启动文件 ecosystem.co
因为某些需求,需要把前后端部署在同一个端口,配置nginx反向代理,如下 在运行时已经将80端口映射到8848,并且能正确访问前端的页面。我预期是访问http://localhost:8848/zssrapi/xxx时能转到后端实际端口http://localhost:8123/zssrapi/xxx。但是尝试之后报错404,如图, 求助解决办法qaq
今天的目标是完成一个 Python Web 项目的线上部署,我们使用最新的 Django 项目搭建一个简易的 Web 工程,然后基于 Nginx 服务部署该 Python Web 项目。 1. 前期准备 1.1 安装虚拟环境pyenv 首先要知道,使用虚拟环境逐渐成了 python 项目开发中的一种主流方式。pyenv 可以帮我们生成多个 python 的虚拟环境,这样我可以在同一台机器上使用 p
本文向大家介绍Python开发之Nginx+uWSGI+virtualenv多项目部署教程,包括了Python开发之Nginx+uWSGI+virtualenv多项目部署教程的使用技巧和注意事项,需要的朋友参考一下 1、新建独立运行环境,命名为env 2、激活虚拟环境 [root@vultr projects]# source env/bin/activate 执行后命令提示符前面会出现一个env
本文向大家介绍在Nginx上部署ThinkPHP项目教程,包括了在Nginx上部署ThinkPHP项目教程的使用技巧和注意事项,需要的朋友参考一下 前段时间用Apache配合TP开发了一个小型网站,也算是我使用TP的第一次实战。我习惯使用pathinfo模式,本地运行一切正常,然而部署到服务器上时,由于对方使用的是Nginx,默认是不支持ThinkPHP的pathinfo模式,所以导致路径错误,出
vue 项目打包报错? 应该怎么调整? package.json