Nginx Config for 2 django applications 2 different endpoints 1 server host

Nginx Config for 2 django applications 2 different endpoints 1 server host

所以问题是我有1个ip(例如127.0.0.1

我的服务器上有 2 个不同的 Django 应用程序

1. /api     0.0.0.0:8000
2. /data    0.0.0.0:8090
3. /        this will go to default pages served up by nodejs

我需要弄清楚 如何部署这些独立服务的 nginx 配置,每个服务都有自己的数据库。

导航时如果命中端点,它将被路由到适当的应用程序,否则它将默认为 nodejs 应用程序。

额外信息: 当登录 /api/admin/ 它被路由到 /admin 并失败 请考虑 django 所做的重定向。 我尝试了很多东西,包括设置 Host 或 Location

这将是 2 天后的赏金,祝您狩猎愉快。

当前 nginx

upstream app1 {
    server 0.0.0.0:8000;
}

upstream app2 {
    server 0.0.0.0:8090;
}

server {
    listen       80;
    server_name  localhost;


    location / {
        error_log /var/log/webapp/error.log debug;
        access_log /var/log/webapp/access.log;

        proxy_pass http://0.0.0.0:3000;
        proxy_redirect off;
    }

    location /api {
        location /api/static {
            alias /var/tmp/app1/static;
            #autoindex on;
        }
        proxy_pass http://app1;
        proxy_redirect off;
    }

    location /data {
        location /data/static {
            alias /var/tmp/app2/static;
        }
        proxy_pass http://app2;
        proxy_redirect off;
    }
}

您是否使用 gunicorn 作为 WSGI 服务器?

以防万一,尝试将其添加到现有的 nginx 配置中:

location /api {
    proxy_set_header SCRIPT_NAME /api;
    ...

location /data {
    proxy_set_header SCRIPT_NAME /data;
    ...
...

原则上,SCRIPT_NAME 将传递给 gunicorn,后者应将其用作所有地址的前缀。

不过,我从未在实际项目中尝试过。