这是我的 httpd.config 文件 如何禁用直接 IP 访问?如果有人输入站点的 ip 地址,则不应重定向到默认域名或本示例中为 xxx.com 的站点
<VirtualHost ipaddress:8080>
ServerName xxx.com
ServerAlias www.xxx.com
ServerAdmin info@xxx.com
DocumentRoot /home/admin/web/xxx.com/public_html
ScriptAlias /cgi-bin/ /home/admin/web/xxx.com/cgi-bin/
Alias /vstats/ /home/admin/web/xxxcom/stats/
Alias /error/ /home/admin/web/xxx.com/document_errors/
.
.
.
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我正在将我的评论扩展为答案,以便提供详细配置以响应 OP 的进一步询问。我的建议是将您的配置移动到 VirtualHost 块中以提高灵活性。此处仅显示基本位:
<VirtualHost *:80>
ServerName default
DocumentRoot /home/admin/web/xxx.com/public_html
<Location />
Require all denied
</Location>
</VirtualHost>
<VirtualHost *:80>
ServerName domain.com
DocumentRoot /home/admin/web/xxx.com/public_html
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
default
可以是任何名称或服务器的 IP 地址。
domain.com
是您希望服务器响应的域。
说明:当使用 IP 地址调用时,apache 会使用默认的 VirtualHost 详细说明请求。定义的第一个 VirtualHost 是默认值,无论其 ServerName 是什么。当然,将 ServerName 设置为 IP 地址也有效,并且将保留默认服务器以供其他情况使用。location 块拒绝对整个 VirtualHost 的每个请求。
编辑:我后来看到这个问题被标记为apache-2.2
,而我的回答使用了apache-2.4
语法。上apache-2.2
的线Require all denied
必须与两行取代:Order deny,allow
和Deny from all
。此外,NameVirtualHost *:80
在VirtualHost
定义之前需要a 。
更新:问题已更新,所以我认为最好提供 的配置apache-2.2
,包括所有必要的行。与上述相同的解释适用。
Listen 8080
NameVirtualHost ipaddress:8080
<Directory "/home/admin/web/xxx.com/public_html">
Order allow,deny
Allow from all
</Directory>
<VirtualHost ipaddress:8080>
ServerName ipaddress
DocumentRoot /home/admin/web/xxx.com/public_html
<Location />
Order deny,allow
Deny from all
</Location>
</VirtualHost>
<VirtualHost ipaddress:8080>
ServerName xxx.com
DocumentRoot /home/admin/web/xxx.com/public_html
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
评论:我同意还有其他有效的解决方案;然而,这就是我喜欢组织我的配置文件的方式,里面有安全限制Directory
或Location
块,所以我知道在哪里寻找它们。
归档时间: |
|
查看次数: |
25697 次 |
最近记录: |