You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁止通过EC2公网IPv4及公有DNS访问已部署的应用?

这个问题我之前帮朋友处理过,本质上是两个层面的问题:一是你的EC2实例直接暴露了公网访问入口,二是Apache的重定向规则只覆盖了自定义域名,没处理IP和EC2默认域名的情况。给你两个方案,优先推荐第一个,符合生产环境的最佳实践:

解决方案

方案1:通过安全组限制流量(推荐)

既然已经配置了负载均衡,正常来说所有用户流量都应该通过负载均衡转发到EC2实例,直接访问EC2的IP/DNS属于非预期访问。你可以通过修改EC2实例的安全组从根源解决:

  • 编辑EC2实例的入站规则,移除对0.0.0.0/0(所有公网IP)开放80(HTTP)和443(HTTPS)端口的规则
  • 添加新的入站规则,允许负载均衡对应的安全组访问80和443端口
  • 这样一来,只有负载均衡能和EC2实例通信,外部用户直接访问EC2的IP或DNS时会被安全组拦截,彻底杜绝这类非预期访问

方案2:配置Apache全局HTTPS重定向(保留直接访问场景)

如果因为测试或其他原因需要保留EC2 IP/DNS的直接访问权限,那就要修改Apache的配置,让所有HTTP请求不管访问的Host是什么,都强制重定向到HTTPS:

  1. 登录到你的EC2实例,打开Apache的站点配置文件(通常是/etc/apache2/sites-available/000-default.conf或者WordPress对应的站点配置文件)
  2. 在<VirtualHost *:80>块中,替换原有内容为如下规则:
    <VirtualHost *:80>
        ServerName mysiteweb.com
        # 把EC2公有DNS和公网IP添加为别名
        ServerAlias ec2-XX-XX-XX-XX.compute-1.amazonaws.com XX.XXX.XXX.XX
        # 永久重定向到HTTPS
        Redirect permanent / https://%{HTTP_HOST}%{REQUEST_URI}
    </VirtualHost>
    
  3. 确保Apache已启用rewrite模块(如果之前没启用):
    sudo a2enmod rewrite
    
  4. 重启Apache服务使配置生效:
    sudo systemctl restart apache2
    

额外检查:WordPress站点配置

如果通过IP或EC2 DNS访问时出现内容加载异常,还需要调整WordPress的站点URL设置:

  • 登录WordPress后台,进入「设置」→「常规」
  • 确保「WordPress地址(URL)」和「站点地址(URL)」都设置为你的自定义域名https://mysiteweb.com,不要用IP或EC2默认域名
  • 如果无法通过后台修改,直接编辑wp-config.php文件,添加以下两行:
    define('WP_HOME','https://mysiteweb.com');
    define('WP_SITEURL','https://mysiteweb.com');
    

这样处理后,要么彻底阻断直接访问EC2的路径,要么让所有HTTP请求(不管用什么地址访问)都跳转到HTTPS,完美解决你的问题。

内容的提问来源于stack exchange,提问作者medkhelifi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 14:42:48