1. Strapi的消费端
为了验证Strapi的api的调用,使用asp.net core 3
创建了一个简单的Demo进行配置,不过本文主要关注与如何使用Nginx配置asp.net core 3 app
与strapi app
协同工作,而不关注具体的Demo的代码实现。
2. 整体架构
2.1 项目结构图
2.2 process list
2.3 为什么不将Demo App放到docker-compose中
因为我们希望strapi的系统通过Nginx对外可见,所以现在的做法是做了两个docker的app,一个是通过docker-compose启动的strapi+mongo,第二个是通过docker启动的Demo App。
然后通过Nginx的反向代理功能,将不同的App反向代理到不同的url上。
- Strapi通过 https://localhost:443 proxy-pass到http://localhost:1337 上
- Demo App通过 https://localhost:443/ux proxy-pass到http://localhost:9981 上
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的源代码,有需要的话可以参考:
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END