Strapi 03 :: 使用Nginx集成Strapi以及其消费端

1. Strapi的消费端

为了验证Strapi的api的调用,使用asp.net core 3创建了一个简单的Demo进行配置,不过本文主要关注与如何使用Nginx配置asp.net core 3 appstrapi app协同工作,而不关注具体的Demo的代码实现。

2. 整体架构

2.1 项目结构图

image.png

2.2 process list

image.png

2.3 为什么不将Demo App放到docker-compose中

因为我们希望strapi的系统通过Nginx对外可见,所以现在的做法是做了两个docker的app,一个是通过docker-compose启动的strapi+mongo,第二个是通过docker启动的Demo App。

然后通过Nginx的反向代理功能,将不同的App反向代理到不同的url上。

3. Nginx设置

我们现在整体Review一下Nginx对于整个项目的设置

server {
      listen 80;
      return 301 https://$host$request_uri;
}

server {
      listen 443 ssl;

      large_client_header_buffers 4 16k;

      ssl_certificate           /etc/ssl/fullchain.pem;
      ssl_certificate_key       /etc/ssl/private.pem;

      ssl on;
      ssl_session_cache  builtin:1000  shared:SSL:10m;
      ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
      ssl_prefer_server_ciphers on;

      access_log  /var/log/nginx/www.example.com.access.log;
      error_log  /var/log/nginx/www.example.com.error.log;

      location / {
        proxy_pass http://localhost:1337;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
     }

     location /ux {
        # proxy_pass中url后面带/表示绝对路径,不带/表示相对路径
        # e.g.:如果proxy_pass: http://localhost:9981, 那么表示http://localhost:9981下的所有路由都需要放到ux子虚拟目录下
        #       如果proxy_pass: http://localhost:9981/, 那么表示http://localhost:9981下的所有路由是以nginx的根域名作路由的
        proxy_pass http://localhost:9981;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
     }
}
复制代码

3.1 Demo App的nginx 设置

根据上面的描述,因为asp.net core的asset的一些设置,我们需要使用相对路径进行路由,因为对于一些图片和js文件,将网站的所有资源放到子虚拟目录下是最方便,也最好维护的。

3.2 Demo App中做出的调整

为了做到3.1中的设置,我们需要在asp.net core的startup.cs中做出如下的配置。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
        app.UseHsts();
    }
    // 这样就可以将整个网站放到ux子虚拟目录下
    app.UsePathBase($"ux");
    // ...
}    
复制代码

下面链接是Demo App的源代码,有需要的话可以参考:

gitlab.com/yafeya/work…

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享