Nginx白名单API请求来自同一服务器的客户端,阻止所有其他服务器

时间:2018-06-18 21:13:27

标签: django ubuntu nginx django-rest-framework

我有一个Django应用程序,其中有两个使用Django Rest Framework的API端点,我想只能由Django应用程序本身访问。我试图通过nginx限制访问这些端点,但我尝试的所有内容都会导致所有客户端上的403 fobidden响应或者所有客户端都能访问。

下面是我的nginx配置。我也尝试用服务器的IP替换127.0.0.1,但这导致上面提到的相同响应。

upstream app_server {
    server 127.0.0.1:9000 fail_timeout=0;
}

upstream api_server {
    server 127.0.0.1:9001 fail_timeout=0;
}

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    client_max_body_size 4G;
    server_name _;

    keepalive_timeout 5;

    location /endpoint1/ {
        allow 127.0.0.1;
        deny all;
    }

    location /endpoint2/ {
        allow 127.0.0.1;
        deny all;
    }

    location /static/ {
        autoindex on;
        alias /path/to/static/;
    }


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

}

TL; DR我有一个Django API,它只接受来自与它一起运行的Django应用程序的请求。实现这一目标的最佳方法是什么?

0 个答案:

没有答案