通过 IP 地址限制对网站的访问

通过 IP 地址限制对网站的访问

当我通过端口 80/tcp 访问我的网站时www.mysite.com,它会将我重定向到 https 443/tcp。没关系。
但是当我访问链接https://xx.xx.xx.xx(通过其 IP 地址)时,我可以轻松访问它
,并且它给了我不可信的站点。

我想通过 IP 地址限制对我网站的任何访问。
我的网络服务器是 apache
。我尝试将这些代码行添加到 000-default.conf 中:

<VirtualHost *:80>
ServerName xx.xx.xx.xx (ip address)
Redirect 403 /
ErrorDocument 403 “Sorry, direct IP access not allowed.”
DocumentRoot /dev/null/
UseCanonicalName Off
</VirtualHost>

重新启动 apache 时出现错误。

目前我在 Apache 中有这样的配置:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/
Redirect / https://www.mysite.com/

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

我怎样才能实现这个目标?谢谢。

答案1

这是错误的:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/
Redirect / https://www.mysite.com/

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

因为它重定向一切。您需要将 403 拒绝放在那里。然后使用适当的服务器名称将重定向复制到您的服务器中001-yoursite.conf。然后 http://yoursite 将被重定向到 https://yoursite,但 http://IPADDRESS 将会反弹,因为它将达到默认值。 http://anyothersite 也应该如此。

然后你需要添加一个默认服务器作为 SSL(我想它是 000-default-ssl.conf),并同样拒绝*:443,这样 https://whatever 就会反弹,除非“whatever”与你的服务器名匹配,从而登陆001-yoursite-ssl.conf

您无需指定 DocumentRoot如果您所做的只是发布403 Forbidden.而且您可能不需要担心错误日志和访问日志,无论如何它都只是机器人流量(如果您确实需要,您可以定义一个非常小的 access_log 格式 - 只需源 IP,也许还有用于机器人分类的用户代理) 。

相关内容