使用nginx和gunicorn限制在django中通过ip访问管理URL

时间:2014-03-05 20:30:28

标签: django nginx gunicorn

我试图通过在nginx中使用简单的基于主机的访问控制来限制对我的django应用程序的admin部分的访问。 不幸的是,nginx似乎没有遵守配置请求:

这是我在nginx中的特定部分的设置:

# gunicorn setup
location / {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }


 location /admin/ { # restrict access to admin section
    allow 192.168.0.1;
    deny all;
 }

这仍然会阻止我的ip 192.168.0.1。 我究竟做错了什么? 有没有其他方法可以阻止访问django应用程序的/ admin /部分?

1 个答案:

答案 0 :(得分:9)

我通过将/ admin / location替换为以下内容找到了解决此问题的方法:

location ^~ /admin/ { # restrict access to admin section
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    allow 192.168.0.1;
    deny all;
}

我希望这会在互联网上节省一些长时间的搜索。 我很感激提供更好解决方案的答案。