如何通过Nginx配置实现网站仅允许域名访问、禁止IP直接访问
Nginx 仅允许域名访问配置修改方案
你无需修改现有配置,只需要在现有两个server块的最前面,新增两个默认请求捕获的server块即可,逻辑是所有未匹配到域名avoe.com的请求(包括直接用IP访问的请求)都会被这两个默认块拦截,直接返回拒绝访问的状态码。
注意:如果你的nginx配置里其他server块已经配置了
default_server参数,需要先删除原有default_server标记,再添加下面的两个默认拦截块。
操作步骤
1. 新增80端口默认拦截块
server { listen 80 default_server; server_name _; # 直接返回403禁止访问,也可以换成return 444直接断开连接不返回任何内容 return 403; }
2. 新增443端口默认拦截块
server { listen 443 ssl default_server; server_name _; # 复用你现有的证书即可,用户用IP访问HTTPS时浏览器会先提示证书不匹配,不影响拦截效果 ssl_certificate /etc/ssl/__reksoft_ru.crt; ssl_certificate_key /etc/ssl/private.key; return 403; }
3. 生效配置
保存配置文件后执行以下命令验证配置正确性:nginx -t
如果提示syntax is ok、test is successful,再执行重载命令生效:nginx -s reload
配置生效后,直接输入IP访问站点会被拦截返回403,只有通过域名avoe.com访问才能正常加载站点内容。
内容的提问来源于stack exchange,提问作者Артур Вартанян
相关产品推荐
相关产品推荐

