如何正确配置Strapi与NGINX子域名路由修复Admin页面路径
解决Strapi Admin子域名路由与页面内链接问题
一、正确配置Strapi的Admin与Server参数
要解决页面内链接带/admin前缀的问题,核心是让Strapi Admin面板的前端路由生成对应子域名的根路径链接,而非依赖NGINX的rewrite规则。
1. 修改config/admin.js
将Admin面板的基础URL指定为子域名根路径,同时同步登录页的URL配置:
module.exports = ({ env }) => ({ auth: { secret: env('ADMIN_JWT_SECRET'), url: 'http://admin.website.com/auth/login', }, url: 'http://admin.website.com', serveAdminPanel: true, });
注意:Strapi不允许直接将
url设为/,必须指定完整的子域名URL才能正确生成前端路由。
2. 修改config/server.js
配置API基础URL并允许两个子域名的跨域请求:
module.exports = ({ env }) => ({ host: env('HOST', '0.0.0.0'), port: env.int('PORT', 1338), app: { keys: env.array('APP_KEYS'), }, url: 'http://api.website.com', cors: { enabled: true, origin: ['http://admin.website.com', 'http://api.website.com'], }, });
二、配置NGINX的Admin子域名规则
无需使用rewrite移除/admin路径,直接将子域名请求代理到Strapi的/admin路径,并传递必要的请求头:
server { listen 80; server_name admin.website.com; location / { proxy_pass http://localhost:1338/admin; proxy_set_header Host $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; } }
三、确认API子域名的NGINX配置
保留你已有的API配置即可,确保请求正确代理到Strapi根路径:
server { listen 80; server_name api.website.com; location / { proxy_pass http://localhost:1338; proxy_set_header Host $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; } }
四、问题根源说明
之前的临时方案仅通过NGINX rewrite隐藏了/admin路径,但Strapi Admin的前端路由是根据config/admin.js中的url参数生成的,未修改该参数时,页面内链接会默认带上/admin前缀。只有正确配置Strapi的Admin基础URL,才能让前端生成符合预期的无/admin前缀链接。
完成上述配置后,重启Strapi和NGINX即可实现:
admin.website.com直接访问Admin面板,所有页面内链接均不带/admin前缀api.website.com正常访问API接口,路径完全匹配需求
内容的提问来源于stack exchange,提问作者Alexiuscrow
相关产品推荐
相关产品推荐

