2017-01-06 70 views
0

如何阻止API的外部請求,如/api/private/而內部機器可以訪問這些URL?nginx阻止來自外部請求的私人API a

目前我使用的配置就像在機器A

```

listen 80; 
server_name api.example.com; 

location /api/private/ { 
    allow 10.0.0.0/16; 
    deny all; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 

    proxy_pass http://backend; 
} 

```

以下但如果我要求「api.example.com/這是行不通的api/private/XXX'。B有一個私有IP地址10.0.XX和一個公共IP地址。它似乎總是請求與公共IP地址,以便allow 10.0.0.0/16不起作用。

我的配置是否有問題,或者是否有更好的工具來處理它?

回答

0

你的nginx配置看起來是正確的,我認爲這更多與你的DNS有關。

api.example.com解析哪個IP?您的nginx服務器上的公共或私人界面?我在猜測公共IP。如果機器B將會使用公共IP,並且將不得不使用它自己的公有IP來這樣做,所以nginx不會將其視爲內部。

你應該讓機器B向內部IP請求,或者通過改變你的腳本或者通過改變你的腳本並改變本地DNS來使api.example.com指向內部IP。在linux上,這可以通過在/ etc/hosts中添加如下代碼來完成:api.example.com 10.0.0.X