首页 > 解决方案 > Strapi/Nginx - Strapi 路由在生产中不起作用

问题描述

我创建了一个使用nuxtjs前端和Strapi后端的网站。部署到 VPS 后,我无法让strapi 路由工作。我在互联网上阅读了多篇关于此的帖子,并遵循了有关 nginx 代理的官方文档,但没有成功。

路径:/etc/nginx/sites-available/example.com

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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 /strapi/ {
        rewrite ^/strapi/(.*)$ /$1 break;
        proxy_pass http://127.0.0.1:1337;
        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;
    }
}

路径:后端/config/server.js

module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  url: 'http://example.com/strapi',
});

访问 example.com 会按预期显示前端。访问 example.com/strapi 显示以下站点: 单击“打开管理”按钮将我带到 example.com/admin,它返回我的 404 前端错误页面。在此处输入图像描述

我会非常感谢任何形式的帮助。

标签: nginxroutesnginx-configstrapi

解决方案


我曾经有同样的问题

现在我使用子域配置来避免这些问题

好多了

这是我的配置

NGINX

server {

    listen 80;
    server_name example.com www.example.com;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Client-IP $remote_addr;
    proxy_set_header X-Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    client_max_body_size 0;

    charset utf-8;

    location / {
        proxy_pass http://webapp:9984;
        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;
    }

}

server {
    listen 80;
    server_name api.example.com www.api.example.com;

    location / {
        proxy_pass http://backend:13131;
        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;
    }
}

STRAPI

module.exports = ({ env }) => ({
    host: env('HOST', '0.0.0.0'),
    port: env.int('PORT', 1337),
    url: `http://api.example.com/`,
    admin: {
        auth: {
            secret: env('ADMIN_JWT_SECRET', '----'),
        },
    },
});

推荐阅读