配置 Strapi 以使用 SSL(使用代理)

问题描述 投票:0回答:1

我想设置 Strapi,以便从 Strapi 的默认端口:1337 重定向 mywebsite.de/api。 但是在/api,我的后端是不可访问的。

我的前端(在 Gridsome Site Generator 上)设置为带有 SSL 证书的端口 443。 我配置 /etc/nginx/sites-available/default 如下

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name mywebsite.de;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    server_name mywebsite.de;

    ssl_certificate /etc/letsencrypt/live/mywebsite.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mywebsite.de/privkey.pem;

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

    root /home/debian/frontend/dist;
    index index.html index.htm index.nginx-debian.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

我的后端配置 backend/config/server.js 看起来像这样:

module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  url: "https://mywebsite.de/api", (just /api doesn't work either)
  admin: {
    auth: {
      secret: env('ADMIN_JWT_SECRET', 'mysecret'),
    },
  },
});

当我运行“npm run develop”(用于测试)时,我在控制台中看到了这个:

> [email protected] develop /home/debian/backend
> strapi develop
...
│ Version            │ 3.6.11 (node v14.17.5)                           │
...
To manage your project 🚀, go to the administration panel at:
https://mywebsite.de/api/admin

To access the server ⚡️, go to:
https://mywebsite.de/api

[2023-05-15T19:29:30.683Z] debug GET /api/ (20 ms) 404

最后一行是当我尝试访问https://mywebsite.de/api 在浏览器中,我只看到“未找到”

当我访问https://mywebsite.de/api/uploads/mypicture.jpg

[2023-05-15T19:55:27.324Z] debug GET /api/uploads/mypicture.jpg (16 ms) 404

但是这个 http://11.222.3.44:1337/uploads/mypicture.jpg作品:

[2023-05-15T19:57:07.929Z] debug GET /uploads/mypicture.jpg (26 ms) 200

设置代理或 Strapi 时我忘记了什么? 我将不胜感激关于这个问题的任何建议。

ssl reverse-proxy strapi gridsome
1个回答
0
投票

解决方案在 Nginx 配置文件中。应该是这样的:

server {
listen 443 ssl;
listen [::]:443 ssl;
server_name mywebsite.de;

ssl_certificate /etc/letsencrypt/live/mywebsite.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mywebsite.de/privkey.pem;

  location / {
        root /home/debian/frontend/dist;
  }

# Strapi API and Admin
location /api/ {
    rewrite ^/api/?(.*)$ /$1 break;
    proxy_pass http://localhost: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;
}
}
© www.soinside.com 2019 - 2024. All rights reserved.