我创建了一个使用 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;
}
}
路径:backend/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 前端错误页面。
我将非常感谢任何形式的帮助。
是的。 Strapi 的配置方式旨在与默认根路由一起使用,因此在这种情况下使用子域。
示例
api.example.com
当您登录 Strapi 时,它会点击 api.example.com/admin
等等。
使用子域名更容易。但在您的情况下,访问 Strapi 和管理员的以下网址是:
第一个位置语句与您所有的 http 调用相匹配 因此,即使使用 /strapi 路径的调用也会被重定向到您的前端应用程序 我想你必须改变顺序 尝试移动一下
location /strapi/
之前
location /