Skip to content

Instantly share code, notes, and snippets.

Last active Jun 11, 2021
What would you like to do?
nginx HTTP configuration for SPA, with reverse proxy for API
# Typically I use this file as a boilerplate to configure an nginx docker container
# This goes in /etc/nginx/conf.d/default.conf
# If you are reverse proxying an API
upstream api {
server {
listen 80; // SSL is not configured, but would be configured here
# If you are proxied, and the proxy doesn't support URL re-writing, A rewrite rule can be added here
# rewrite ^REWRITE_URL_GOES_HERE(.*)$ /$1;
location / {
root /usr/share/nginx/html;
# This is due to nginx and the try_files behavior below, it will always
# try to hit the index as part of try_files. If I set index as something
# that doesn't resolve, we don't have to worry about index.html being cached.
# If frequent updates occur, it's important that index.html not be cached
# in the browser. Otherwise the software update will only occur when the
# cached page expires. The If-Modified-Since is a better way to handle this
# for SPAs with frequent updates.
index unresolvable-file-html.html;
try_files $uri @index;
# This seperate location is so the no cache policy only applies to the index and nothing else.
location @index {
root /usr/share/nginx/html;
add_header Cache-Control no-cache;
expires 0;
try_files /index.html =404;
location /api/ {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
# If you have any long running API calls, the read timeout needs to be increased here
# proxy_read_timeout 120s;
proxy_pass http://api/;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment