server { listen 80; # Redirect root to /ghost/ only for exact root requests location = / { return 302 /ghost/; } # Proxy for Ghost location /ghost/ { proxy_pass http://ghost_dev:2368/; proxy_set_header Host ; proxy_set_header X-Real-IP ; proxy_set_header X-Forwarded-For ; proxy_set_header X-Forwarded-Proto ; # Prevent caching proxy_set_header Accept-Encoding ""; proxy_hide_header Cache-Control; add_header Cache-Control "no-store"; # Rewrite URLs in responses sub_filter_once off; sub_filter_types text/html text/css application/javascript; sub_filter 'href="/' 'href="/ghost/'; sub_filter 'src="/' 'src="/ghost/'; sub_filter 'content="/' 'content="/ghost/'; sub_filter 'url(/' 'url(/ghost/'; sub_filter '"/ghost/ghost/' '"/ghost/'; } # Proxy for Forgejo location /forgejo/ { proxy_pass http://forgejo_dev:3000/; proxy_set_header Host ; proxy_set_header X-Real-IP ; proxy_set_header X-Forwarded-For ; proxy_set_header X-Forwarded-Proto ; # Prevent caching proxy_set_header Accept-Encoding ""; proxy_hide_header Cache-Control; add_header Cache-Control "no-store"; # Rewrite URLs in responses sub_filter_once off; sub_filter_types text/html text/css application/javascript; sub_filter 'href="/' 'href="/forgejo/'; sub_filter 'src="/' 'src="/forgejo/'; sub_filter 'content="/' 'content="/forgejo/'; sub_filter 'url(/' 'url(/forgejo/'; } }