Team, is it possible to customise the Strapi REST API endpoints with some static context path before all the standard content type endpoints, something like “[server]/strapi/[content-type]/” ?
It is possible only when using proxy, like nginx.
You can also take a look at the documentation section:
https://strapi.io/documentation/developer-docs/latest/deployment/nginx-proxy.html#sub-folder-unified
./config/server.js
module.exports = ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 1337),
url: 'https://example.com/api',
});
nginx config:
server {
# Listen HTTP
listen 80;
server_name example.com;
# Redirect HTTP to HTTPS
return 301 https://$host$request_uri;
}
server {
# Listen HTTPS
listen 443 ssl;
server_name example.com;
# SSL config
ssl_certificate /path/to/your/certificate/file;
ssl_certificate_key /path/to/your/certificate/key;
# Static Root
location / {
root /var/www/html;
}
# Strapi API and Admin
location /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://strapi;
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;
}
}
Thanks @sunnyson
Our setup is running Strapi as independent AWS cloud service accessed inside VPC without any proxy/gateway server in front of it. If that is the case, bringing in additional proxy server (like Nginx) for this specific use-case may not be possible in our setup.
Anyways will check if there are any other options to address this without proxy server.
sub-folder path prefixes are only possible with a proxy service like Nginx, HAProxy, Traefik, ect (Do not recommend Apache nor IIS as a proxy service, they support it but in a horrible and performance negative way).
The alternative, is give Strapi it’s own subdomain and isolate it from your frontend domain like api.example.com
instead of example.com/api
Thank you @DMehaffy.
In fact, we have subdomain defined like “strapi.example.com/[content-type]/…” Just thought of having “strapi” in the URL path as well for some internal processing if possible.
You can certainly do that, but you will need a proxy application as the koa-router will not apply the prefix internally. It’s only used in certain “public” urls