我有一个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;
}
}