gatlanticus
gatlanticus

Reputation: 1226

How to serve React app AND Django blog from Nginx?

I'm using nginx to serve a React app from my domain root / and a Django blog app from /blog. I'm also using nginx to redirect all http to https.

The problem is some weird behaviour... If I navigate to the blog with a clear cache, it shows the blog. If I then navigate to the index page it shows the react app. All good so far. But then, if I return to /blog it continues to show the react app, not the blog! I think the problem involves caching, but I'm not sure where.

I am not using react-router, so I'm not sure how the urls could get redirected on the client side.

Here is my nginx config:

server {
    listen 80;
    server_name mydomain.com;
    return 301 https://$server_name$request_uri;
}


server {
    listen 443 ssl;
    server_name mydomain.com;
    root /production_build;

    location /static/ {
        root /var/www/mysite;
    }

    location /blog {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://upstream_django_server;
    }

    location /cms {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://upstream_django_server;
    }

    location / {
        try_files $uri /index.html;
    }
}

Upvotes: 0

Views: 1124

Answers (1)

Tarun Lalwani
Tarun Lalwani

Reputation: 146510

You should disable the service worker in react, as it is interfering with your /blog url and returning its own response the next time.

Since you are mixing 2 apps here, you don't want to take a risk of having something which is difficult to get rid of.

Service workers can be sometimes very nasty because of caching responses

Upvotes: 4

Related Questions