diff --git a/backend/nginx.conf b/backend/nginx.conf index a58fce5..ae9992b 100644 --- a/backend/nginx.conf +++ b/backend/nginx.conf @@ -17,24 +17,24 @@ http { } server { - listen 80; # NGINX always listens on port 80 inside the container + listen 80; server_name localhost; location / { - proxy_pass http://server:8000; # Explicitly forward to Django service - 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; + proxy_pass http://server:8000; # Forward to internal Gunicorn server + proxy_set_header Host $host; # Forward Host header from the request + proxy_set_header X-Real-IP $remote_addr; # Forward real IP + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Forward original IP + proxy_set_header X-Forwarded-Proto $scheme; # Forward the protocol + proxy_set_header X-Forwarded-Host $host; # Forward the Host header } - location /static/ { - alias /code/staticfiles/; # Serve static files directly + alias /code/staticfiles/; } location /media/ { - alias /code/media/; # Serve media files directly + alias /code/media/; } - } +} } diff --git a/backend/server/adventures/middleware.py b/backend/server/adventures/middleware.py index 3cd9713..550e581 100644 --- a/backend/server/adventures/middleware.py +++ b/backend/server/adventures/middleware.py @@ -20,4 +20,23 @@ class PrintCookiesMiddleware: def __call__(self, request): print(request.COOKIES) response = self.get_response(request) - return response \ No newline at end of file + return response + +# middlewares.py + +import os +from django.http import HttpRequest + +class OverrideHostMiddleware: + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request: HttpRequest): + # Override the host with the PUBLIC_URL environment variable + public_url = os.getenv('PUBLIC_URL', None) + if public_url: + # Split the public URL to extract the host and port (if available) + host = public_url.split("//")[-1].split("/")[0] + request.META['HTTP_HOST'] = host # Override the HTTP_HOST header + response = self.get_response(request) + return response diff --git a/backend/server/main/settings.py b/backend/server/main/settings.py index c135d79..2b23b99 100644 --- a/backend/server/main/settings.py +++ b/backend/server/main/settings.py @@ -69,6 +69,7 @@ MIDDLEWARE = ( 'corsheaders.middleware.CorsMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', + 'adventures.middleware.OverrideHostMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',