【问题标题】:Two different ports for front end and back end? (using Strapi) - configuration for nginx前端和后端有两个不同的端口? (使用 Strapi) - nginx 的配置
【发布时间】:2019-10-25 14:07:51
【问题描述】:

我想这是一个非常基本的问题,但它仍然让我感到困惑。在开发阶段,当使用 'npm start' 启动 react 时,我使用的是 3000 端口。此外,在启动strapi(这是一个后端 cms)时,它会自动使用端口 1337。

这是否真的意味着我的应用使用了两个不同的端口?

我问这个是因为我想配置 nginx,以便我可以在同一台服务器上运行两个不同的 Strapi 应用程序(附加到两个不同的反应应用程序)。

我希望 nginx 从特定位置重定向到第二个网站。我可以在站点可用文件中写入:

server {
    listen 80;
    location / {
      proxy_pass "http://mysite:3000";
    }

    location /mysecondsite {
      rewrite ^/mysecondsite(.*) $1 break;
      proxy pass "http://mysite:??????? WHAT SHOULD I WRITE HERE?"
    }
}

但是我应该将输入第二个站点 url 的用户重定向到哪个端口?

在strapi文档中,它们指向一个名为 server.json 的文件,您可以在其中更改strapi使用的端口,还可以创建一个代理(我不明白如果您可以重定向,为什么要这样做nginx?),例如:

{
  "host": "localhost",
  "port": 1337,
  "proxy": {
    "enabled": true,
    "ssl": true,
    "host": "example.com",
    "port": 8443
  },
  "autoReload": {
    "enabled": true
  },
  "cron": {
    "enabled": true
  }
}

但是改变第二个项目的端口只会影响strapi后端,不是吗? 如何为第二个项目的前端创建不同的端口?

如果我误解了这里的条款,我很抱歉 提前致谢

【问题讨论】:

    标签: node.js nginx deployment strapi


    【解决方案1】:

    2019-06-29 更新:(一个应用程序 - 前端和 Strapi)

    我回来是因为我发现有人解决了您的问题并使用 Strapi 部署了一个应用程序。

    How to integrate Strapi API and Admin Panel with another node app (that consumes Strapi API)?

    因此,您必须构建自己的网站应用程序。并将构建推送到 Strapi 应用程序的./public 文件夹中。

    然后在您的 api/.../config/routes.json 文件中,您必须在您的每条路由和所有 API 的 config 键中添加一个选项 prefix

    {
       "routes": [
         {
           "method": "POST",
           "path": "/restaurants",
           "handler": "Restaurant.create",
           "config": {
             "policies": [],
             "prefix": "/api"
           }
         }
       ]
     }
    
    • 所以最后你的管理员会在/admin
    • 您的 API 端点以 /api 为前缀
    • 以及您在/ 上的网站/资产

    而且您不必为第二个应用程序配置 nginx,因为只有一个。


    2019-06-11:(两个单独的应用程序)

    您想在端口 3000 上有主反应应用程序,在 1337 上有用于后端 api 的 cms,供主反应应用程序使用?您可以使用如下配置。

    nginx.conf

    server {
      listen 80;
      server_name mywebsite.pl www.mywebsite.pl;
    
      location / {
        proxy_pass http://mysite:3000/;
      }
    
      location /admin/
      {
        proxy_pass http://mysite:1337/admin/;
      }
    
      location /strapi/
      {
        proxy_pass http://mysite:1337/;
      }
    }
    

    server.json

    {
      "host": "localhost",
      "port": 1337,
      "proxy": {
         "enabled": false
      },
      "autoReload": {
        "enabled": true
      },
      "cron": {
        "enabled": false
      },
      "admin": {
        "path": "/admin",
        "build": {
          "host": "/admin",
          "backend": "http://mywebsite/strapi",
          "plugins": {
            "source": "backend",
            "folder": "/strapi"
          }
        }
      }
    }
    

    记住:

    1. ⚠️如果您更改了访问管理的路径,则步骤#2 is required -> 您必须重新设置管理员才能安装依赖项并构建项目

    2. 将生产环境NODE_ENV 标志更改为productionRun the server with the production settings.

    资源:

    1. Deploy the administration panel on another server then API
    2. Deployment

    【讨论】:

    • 非常感谢,但我希望 url mysite/mysecondsite 重定向到第二个项目,那么我该如何定义呢?因为默认我部署的每个项目,前端的端口都是3000?
    • @sir-haver 你的第二个项目是什么? React 网站应用程序或strapi-cms 应用程序?每个应用程序都可以由一个端口托管,因此您需要两个不同的端口用于前端应用程序和strapi-cms 应用程序。
    • 谢谢丹尼尔。我的第二个项目是 react 和strapi。所以这意味着我需要为我的反应设置 .env 文件以使用不同的端口,并为strapi定义 server.json 以使用不同的端口,然后将其设置为类似于您在我的 nginx 文件中所做的那样?所以我总共使用了 4 个不同的端口,对吗?对于我的 react 和strapi,对于每个项目
    • 是的。当每个 react 应用程序的strapi-cms 应用程序是单独的实例时,您需要 4 个不同的端口。您必须配置您的反应应用程序以使用正确的strapi-cms api
    • 您好,我回来了,因为我发现有人解决了您的问题并使用 Strapi 部署了一个应用程序。你可以在这里看到:stackoverflow.com/questions/56661677/…
    猜你喜欢
    • 2021-05-19
    • 2019-09-17
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 2023-04-07
    • 2017-01-21
    • 1970-01-01
    • 2019-05-10
    相关资源
    最近更新 更多