将Nuxt应用程序编译为静态文件,并使用Nginx部署在子文件夹中

s3fp2yjn  于 2023-04-20  发布在  Nginx
关注(0)|答案(1)|浏览(242)

我尝试使用Docker在本地部署一个静态Nuxt应用程序到一个子文件夹(假设为private/),并让Nginx将特定URL段(localhost:81/private)的流量路由到该应用程序。
已经有另一个Nuxt应用程序正在为localhost:81/提供服务,并且运行良好。
问题
当浏览嵌套的应用程序时,会显示“无法找到此页面”页面:

嵌套的Nuxt应用
  • 使用"nuxt": "^2.16.0"nuxi generate脚本生成
  • 该应用程序目前只有根索引页,即/(除了index.vue没有其他文件存在于pages/文件夹)
  • nuxt.config.js文件包括app.baseURL = '/private'
  • 该应用程序生成的文件都下载没有错误:

  • 检查返回的页面源,我可以看到所有的脚本URL都以/private/为前缀,例如href="/private/_nuxt/19290fb.js"
Nginx配置
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;
    index  index.html index.htm;

    location /private {
        alias   /usr/share/nginx/html/private;
        try_files $uri $uri/ /index.html;
    }

    location / {
        root   /usr/share/nginx/html/public;
        try_files $uri $uri/ /index.html;
    }

    # other nginx default stuff, never changed these
}

我期待什么?

浏览到localhost:81/private应该提供“嵌套”应用程序索引页面

更新#1

注意到最后一个脚本是由localhost:81/提供的,而不是由/private提供的,并且不是由index.html启动的,而是由另一个脚本启动的。
检查启动器脚本,它似乎错误地创建了文件的路径:

yqlxgs2m

yqlxgs2m1#

用Nuxt 3(而不是Nuxt 2和Bridge)开始了一个新的测试项目,它工作得很好。
不明白为什么,但也许nuxt 2-bridge组合与子文件夹部署不匹配,不太确定。

相关问题