我正在尝试设置一个 apache 网络服务器来为多个网站提供服务,并且我希望能够通过服务器本身的 ip 地址来阻止访问。
即如果有人输入http://84.320.65.4/site-name
,则会提供相关站点。但是我只希望他们能够通过 sites-enabled 配置中指定的域访问该站点。
我该在哪里、如何进行配置,或者这是一个坏主意?
答案1
http://httpd.apache.org/docs/2.2/vhosts/examples.html
请看以下示例:“在单个 IP 地址上运行多个基于名称的网站”
这应该会阻止您使用 IP 访问网站。您应该这样做吗?由您决定。缺点是必须正确配置 DNS,并且进行内部测试会更加棘手,但这绝不是阻碍因素。只要网站的代码是用关系超链接完成的,您就不会遇到很多问题。
答案2
你应该看看 Apache 虚拟主机文档,尤其是服务器名称指示。
这里有一个示例配置满足您的需要:
<VirtualHost *:80>
ServerName 84.320.65.4
DocumentRoot /var/www/website/
<Directory /var/www/website/>
Order allow,deny
allow from all
</Directory>
</VirtualHost>
编辑:使用上述配置,该/var/www/
目录将无法浏览。
您的网站将可通过 URLhttp://84.320.65.4/foo
或http://84.320.65.4/bar
(分别对应于/var/www/website/foo
和/var/www/website/bar
)访问。
你可以放一个基本的 HTML 页面/var/www/website/
来警告直接访问的用户http://84.320.65.4