我有一个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应用程序的请求。实现这一目标的最佳方法是什么?