代码之家  ›  专栏  ›  技术社区  ›  apardes

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

  •  0
  • apardes  · 技术社区  · 7 年前

    我有一个Django应用程序,其中有几个API端点使用Django Rest框架,我希望Django应用程序本身只能访问这些API端点。我试图通过nginx限制对这些端点的访问,但我所做的所有尝试要么在所有客户端上都会导致403 fobidden响应,要么所有客户端都可以访问。

    下面是我的nginx配置。我也试过更换 127.0.0.1 与服务器的IP相同,但会产生上述相同的响应。

    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;
        }
    
    }
    

    0 回复  |  直到 7 年前