我有一台运行Apache 2.2.15的CentOS服务器。 如果服务器的IP地址是198.51.100.4,并且我在浏览器http://198.51.100.4上写的,它会在我的网站上。
我想阻止这一点。 我希望我的网站只能在FQDN上访问,例如http://example.com/ 。
如何configuration我的服务器,以便在访问IP地址时无法访问网站?
您可以使用Alias *
来捕获虚拟主机允许的任何其他stream量,因此您必须在最后一个位置使用以*
作为别名的虚拟主机。
就像只有定义的域将被服务。
<VirtualHost *:80> ServerName mywebsite.com DocumentRoot /var/www/default ... </VirtualHost> <VirtualHost *:80> ServerName another.mywebsite.com DocumentRoot /var/www/another ... </VirtualHost> # /!\ THIS HAS TO BE ON THE LAST POSITION /!\ <VirtualHost *:80 *:443> # [ Server Domain ] ServerName localhost ServerAlias * # [ Cancel trafic ] RewriteRule .* - [END,R=406] # [ Custom Log ] CustomLog ${APACHE_LOG_DIR}/other.log combined </VirtualHost>
在我的例子中,只有mywebsite.com&another.mywebsite.com将被允许,所有其他域或IP将被取消stream量。
要取消交通,你可以使用redirect到-
然后添加一个错误代码,例如我用一个RewriteRuleredirect到406不可接受 ( R=406
)。
您可以在这里findredirect代码列表: https : //fr.wikipedia.org/wiki/Liste_des_codes_HTTP
你可以添加一个默认的虚拟主机,只是给出了“拒绝”的错误,或者其他什么。 当一个浏览器然后来到您的networking服务器没有一个主机在URL中匹配任何ServerName
或ServerAlias
线在其他虚拟主机将由默认的虚拟主机提供服务。
所以在你的apacheconfiguration中:
<VirtualHost *:80> ServerName default DocumentRoot /var/www/default ... </VirtualHost> <VirtualHost *:80> ServerName mywebsite.com ... </VirtualHost>
你需要一个像这样的重写规则:
RewriteEngine On RewriteCond %{HTTP_HOST} !^mywebsite.com$ RewriteRule /.* https://mywebsite.com/ [R]