amazon-web-services - 在 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,不知道会不会有关系
解决方案
试试添加这个
if ($host !~* ^(www.example.com)) {
return 444;
}
这将为没有您的域名的所有请求提供 444 作为响应。
推荐阅读
- python - 显示发送数据包 PING 数据的日志 无 接收数据包 PONG 数据 在烧瓶 socketio 中无连续
- c# - 深度克隆带有嵌入文档 ID(树结构)的 MongoDb 文档
- php - 拉拉维尔。在测试期间用 DI 容器中的存根替换对象不起作用
- c - 在 STM32F4 上读取输入 GPIO 位
- angular - 为什么 component.ts 不能分配给接口的变量?
- go - Go中的十六进制编码
- javascript - ajaxStart/turbolinks:click 在使用远程点击链接时不会触发:true
- python - tkinter 的问题(可能没有为 TK 配置 python)
- dom - 在类型未输入值后在 cypress 上输入
- apache-camel - 在 Apache Camel 上,是否可以设置第二条路线来使用来自先前路线的信息,但时间表不同?