nginx 管理面板为空白页(意外的令牌'< '(在运行时~main.fa3b5436.js:1:1))

krcsximq  于 2023-08-03  发布在  Nginx
关注(0)|答案(1)|浏览(95)

我有strapi(作为后端)和nextJs(作为前端)从同一个域服务。所以我使用了strapi文档中的“子文件夹统一”nginx配置(Nginx代理|Strapi Documentation),来反向代理所有来自www.example.com这样的strapi代码domainname.com/backend。
问题:现在strapi显示“服务器运行成功。”与“生产”文本,在url domainname.com/backend,然而,如果我运行domainname.com/backend/admin,它不显示strapi登录屏幕。相反,它在浏览器中显示空白,在控制台中出现以下错误。
浏览器控制台错误:未捕获的语法错误:Unexpected token '<'(at runtime~main.fa3b5436.js:1:1)main.cebf08e6.js:1未捕获语法错误:意外的标记'<'(在main.cebf08e6.js:1:1)
已尝试调试:
我试过从nginx反向代理strapi,没有nextjs配置,一切正常,strapi管理员登录在路径domainname.com/admin打开。这证明我们没有strapi应用服务器的问题。
现在尝试运行nextjs反向代理代码,nextjs在rootdomain打开,strapi显示domainname.com/backend
我也试过访问public/upload文件夹中的图片,网址是:http://domainname.com/backend/uploads/placeholder.png和图片在浏览器中打开。
尝试打开strapi管理员登录sceen与url:http://domainname.com/backend/admin和我得到空白屏幕与控制台错误:


我的nginx文件:/etc/nginx/sites-available/strapi.conf是:

# Listen HTTP
    listen 80;
    server_name domainname.com;

    # Next.js
    location / {
        proxy_pass http://127.0.0.1:3000;  # Replace with the appropriate Next.js server address
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    # Strapi API and Admin
    location /backend/ {
         rewrite ^/backend/?(.*)$ /$1 break;
        proxy_pass http://strapi;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_pass_request_headers on;
    }
}

字符串
我的上游文件:/etc/nginx/conf.d/upstream.conf

upstream strapi {
    server 127.0.0.1:1337;
}```

fcg9iug3

fcg9iug31#

深入挖掘后,问题是如何配置strapi。
更改:在server.js中添加url,地址为“./config/server.js”。同时添加代理:真例:

module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  app: {
    keys: env.array('APP_KEYS'),
  },
  webhooks: {
    populateRelations: env.bool('WEBHOOKS_POPULATE_RELATIONS', false),
  },
  proxy: true,
  url: "https://yoursite.com/backend",
});

字符串
添加url https://yoursite.com/backend将自动创建以下链接,请查看子文件夹统一Strapi在https://docs.strapi.io/dev-docs/deployment/nginx-proxy):

Example domain: https://yoursite.com/backend
Example admin: https://yoursite.com/backend/admin
Example API: https://yoursite.com/backend/api
Example uploaded Files (local provider): https://yoursite.com/backend/uploads


现在我们需要在admin.js文件“./config/admin.js”中进行更改:

module.exports = ({ env }) => ({
  auth: {
    secret: env('ADMIN_JWT_SECRET'),
  },
  apiToken: {
    salt: env('API_TOKEN_SALT'),
  },
  transfer: {
    token: {
      salt: env('TRANSFER_TOKEN_SALT'),
    },
  },
  port: 1337,
  url: `https://yoursite.com/admin`
});


注意:如果你没有https,你可能需要更改中间件,请参阅strapi文档中下面的安全部分的示例:https://docs.strapi.io/dev-docs/configurations/middlewares#security
最后,你必须建立strapi应用程序,否则上面的配置更改将不适用。确保你这样做:

NODE_ENV=production npm run build
or
NODE_ENV=production yarn run build

相关问题