Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 基于名称的虚拟主机?_Apache_.htaccess_Httpd.conf - Fatal编程技术网

Apache 基于名称的虚拟主机?

Apache 基于名称的虚拟主机?,apache,.htaccess,httpd.conf,Apache,.htaccess,Httpd.conf,我有一个使用Apache2的新站点。查看我的服务器日志,我发现越来越多的其他域名(都由GoDaddy托管)神秘地指向我服务器的IP地址。我不知道这有什么害处,但我看不出有任何理由让这种情况持续下去。通过谷歌搜索,我发现阻止这种情况的方法是建立一个基于名称的虚拟主机,并拒绝其他域名指向我的内容的任何尝试。但是,我完全不确定如何设置相关条目。查看我的/etc/apache2/apache2.conf文件中的注释,我得到的印象是我应该按照 NameVirtualHost mysite.com:80 &

我有一个使用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>
NameVirtualHost mysite.com:80
服务器名mysite.com
服务器别名:www.mysite.com
ErrorLog:/var/log/mysite.error.log
CustomLog:/var/log/mysite.access.log
这可能是正确的,也可能是错误的,但我从未在野外修改过apache配置文件,除此之外,我根本不清楚这是否会阻止另一个CrappySite.com指向我的IP地址并显示我的内容

如果有人能告诉我我是如何在这里做事的,我将不胜感激

p、 从我看到的情况来看,我似乎没有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>
然后重新启动Apache

service apache2 restart

在我看来,这或多或少是正确的。要进行测试,请手动连接到您的服务器(例如,使用“telnet”),只需发送一个HTTP请求,在该请求中,您指定了“mysite.com”或“www.mysite.com”以外的“主机”头,并确认它给出了404.Thank。这并没有什么坏处,但对于阻止另一个垃圾网站显示我的内容却毫无用处。我重新启动了apache,它报告我修改的conf文件没有问题。不过,您是否尝试了我建议的测试过程?仅仅因为配置加载成功并不意味着它正在做您期望的事情。在做了这些更改之后,测试它们是否被应用是很重要的。此外,为了清楚起见,没有任何东西可以阻止其他网站(法律除外)侵犯您的IP并显示您的内容。。。这样做只会确保你的服务器只提供通过URL中预期域访问的内容(但是,例如,如果你不使用X-Frame-Options,他们可能仍然会保留你的页面。他们仍然可以复制它)。是的,我会按照你的建议进行telnet,并通过我服务器上的Lynx浏览到具有恶意域名的站点。不,我无法阻止其他网站指向我的IP——我理解这一点。我担心的是,我在Google的眼中会显得很糟糕,因为这些域有垃圾链接。请尝试将标识目录、文件等的配置放在中,并将其中任何一个从节外删除。“允许/拒绝”指令也可能会引起关注:
/etc/apache2/mods-available to
/etc/apache2/modes-enabled
service apache2 restart