You are browsing documentation for an outdated version. See the latest documentation here.
Serving a website and API with Kong Gateway
How to serve both a website and APIs using Kong Gateway
A common use case for API providers is to make Kong Gateway serve both a website and the APIs over port: 80 or 443 in production. For example, https://example.net (Website) and https://example.net/api/v1 (API).
You can do this using a custom Nginx configuration template that calls nginx_kong.lua in-line, and adds a new location block that serves website alongside the Kong proxy location block:
# ---------------------# custom_nginx.template# ---------------------worker_processes ${{NGINX_WORKER_PROCESSES}}; # can be set by kong.confdaemon ${{NGINX_DAEMON}}; # can be set by kong.confpid pids/nginx.pid; # this setting is mandatoryerror_log logs/error.log ${{LOG_LEVEL}}; # can be set by kong.confevents {}http {# here, we inline the contents of nginx_kong.luacharset UTF-8;# any contents until Kong's Proxy server block...# Kong's Proxy server blockserver {server_name kong;# any contents until the location / block...# here, we declare our custom location serving our website# (or API portal) which we can optimize for serving static assetslocation / {root /var/www/example.net;index index.htm index.html;...}# Kong's Proxy location / has been changed to /api/v1location /api/v1 {set $upstream_host nil;set $upstream_scheme nil;set $upstream_uri nil;# Any remaining configuration for the Proxy location...}}# Kong's Admin server block goes below# ...}
Then start Nginx:
nginx -p /usr/local/openresty -c my_nginx.conf