首页 > 解决方案 > 在 AWS 中,我需要帮助以通过公共 ip 或公共 dns 拒绝 url 并仅允许通过域 (CNAME) 访问

问题描述

我有带有弹性ip的aws ec2和带有我的域的route53,并且在服务器中有nginx,这工作正常但是,

我已经看到其他网站是如何工作的,amazon.com udemy.com。如果您通过公共 ip 或公共 dns 直接访问,则会引发错误。我的问题是如何配置它来做同样的事情。

示例:
域的浏览器 url:amazon.com = ok
公共 ip 的浏览器 url:52.222.137.64 = 400-403 错误。
公共 dns 的浏览器 url:server-52-222-137-64.ams50.r.cloudfront.net = 400-403 错误。

域的浏览器 url:example.com = ok
公共 ip 的浏览器 url:124.34.32.245 = ok。
公共 dns 的浏览器 url:ec2-124.34.32.245.eu-west-3.compute.amazonaws.com = ok。

感谢你的帮助。

示例代替我的域,这是我的配置。

server {
    listen                  8089 ssl http2;
    listen                  [::]:8089 ssl http2;
    server_name             example.com;
    root                    /var/www/example.com/public;

    # SSL
    ssl_certificate         /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/example.com/privkey.pem;
    #ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    ssl_dhparam             /etc/letsencrypt/ssl-dhparams.pem;

    # security
    include                 nginxconfig.io/security.conf;

    location / {
       proxy_set_header Accept-Encoding "";
        try_files $uri $uri/ /index.html;
    }

    # additional config
    include                 nginxconfig.io/general.conf;


}

server {
    listen      8080;
    listen      [::]:8080;
    server_name example.com;
    include     nginxconfig.io/letsencrypt.conf;

    location / {
       return 301 https://example.com$request_uri;
    }
}

忘了说我也用docker,不知道会不会有关系

标签: amazon-web-servicesnginxamazon-ec2amazon-route53elastic-ip

解决方案


试试添加这个

if ($host !~* ^(www.example.com)) {
            return 444;

}

这将为没有您的域名的所有请求提供 444 作为响应。


推荐阅读