繁体   English   中英

基于名称的虚拟主机?

[英]Name based virtual host?

我有一个使用Apache2的新站点。 查看我的服务器日志,我发现有越来越多的其他域名(都由GoDaddy托管)正在神秘地指向我的服务器的IP地址。 我不知道这有什么害处,但我看不出任何让我继续这种状况的理由。 从我完成的谷歌搜索工作中,我已经了解到,阻止这种情况的方法是设置基于名称的虚拟主机,并拒绝其他域名指向我的内容的任何尝试。 但是,我完全不确定如何设置相关条目。 查看我的/etc/apache2/apache2.conf文件中的注释,我得到的印象是我应该按照

NameVirtualHost mysite.com:80
<VirtualHost mysite.com:80>
ServerName mysite.com
ServerAlias:www.mysite.com
ErrorLog:/var/log/mysite.error.log
CustomLog:/var/log/mysite.access.log
</VirtualHost>

这可能是正确的,也可能不是正确的,但是我从来没有随意修改过apache配置文件,除此之外,我一点也不知道这将阻止另一个crappysite.com指向我的IP地址并显示我的内容。

任何人都可以告诉我我在这里如何做事,我将非常荣幸。

ps-从我看到的内容来看,我似乎没有httpd.conf文件。 只是apache2.conf。

也许还有另一种方法可以通过编写htaccess规则来专门将不包含mysite.com或www.mysite.com的所有请求重定向到默认的404页面?

为了任何来到这里寻求类似问题解决方案的人的利益,该怎么办

<VirtualHost ip_address:80>
ServerAdmin admin@...
DocumentRoot /var/www/html/
ServerName mysite.com
ServerAlias www.mysite.com
ErrorLog /var/log/mysite.error.log
CustomLog /var/log/mysite.access.log combined
RewriteEngine On
RewriteCond  %{HTTP_HOST}  !^(www.mysite|mysite).com$ [NC]
RewriteRule ^ [F]
</VirtualHost>

不用说你应该

  • 输入服务器的IP地址
  • 使用您网站的域名
  • 确保启用了mod_rewrite

您可以查看通过简单的PHP脚本启用了哪些模块

<?php
print_r(apache_get_modules());
?>

如果mod_rewrite没有显示在该列表中,您通常可以通过简单地从

/etc/apache2/mods-available to
/etc/apache2/modes-enabled

然后重启Apache

service apache2 restart

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM