我在同一個Apache服務器上有幾個虛擬主機,我需要確保只有一組特定IP地址可以訪問。Apache:限制訪問虛擬主機內部的特定源IP地址
請建議最好的方法來做到這一點。我看過mod_authz_hosts模塊,但看起來好像我可以在虛擬主機內部完成它。
我在同一個Apache服務器上有幾個虛擬主機,我需要確保只有一組特定IP地址可以訪問。Apache:限制訪問虛擬主機內部的特定源IP地址
請建議最好的方法來做到這一點。我看過mod_authz_hosts模塊,但看起來好像我可以在虛擬主機內部完成它。
的mod_authz_host
指令必須是<Location>
或<Directory>
塊內,但我已經使用前內<VirtualHost>
像這樣:
<VirtualHost *:8080>
<Location />
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
...
</VirtualHost>
參考:https://askubuntu.com/questions/262981/how-to-install-mod-authz-host-in-apache
如果您使用的是Apache 2.2的虛擬主機內你應該添加以下指令(mod_authz_host):
Order deny,allow
Deny from all
Allow from 10.0.0.1
你甚至可以指定一個子網
Allow from 10.0.0
的Apache 2.4貌似有點不同作爲配置。 也許你更好的指定你使用的是哪個版本的Apache。
感謝您對我能夠通過配置此信息在虛擬主機中添加位置標籤內的指令 – frameworksnow
@frameworksnow好吧,如果我的回答很有用,而且您不認爲這是正確的答案,那麼至少投票;) – giuliox
我試過了,但我沒有投票權按照SO進行。我希望我很快就能獲得更多的聲望,並且會回來投票。再次感謝您提供的意見。 – frameworksnow
對於Apache 2.4,你可以使用Require IP directive。所以,只允許從網絡192.168.0機。*
<VirtualHost *:80>
<Location />
Require ip 192.168.0
</Location>
...
</VirtualHost>
如果你只是想在本地主機的機器可以訪問,那麼網絡接口地址是127.0.0.1
爲IPv4或::1
對IPv6
<VirtualHost *:80>
<Location />
Require ip ::1
</Location>
...
</VirtualHost>
在Apache 2.4中,授權配置語法已更改,不應再使用Order
,Deny
或Allow
指令。
做的新方法,這將是:
<VirtualHost *:8080>
<Location />
Require ip 192.168.1.0
</Location>
...
</VirtualHost>
使用新語法進一步的例子可以在Apache的文檔中找到:Upgrading to 2.4 from 2.2
謝謝你,這對我有用 – frameworksnow