首页 > 其他 > 详细

nginx仅允许域名访问禁止IP访问

时间:2020-07-08 13:31:41      阅读:94      评论:0      收藏:0      [点我收藏+]

为什么要禁止 ip 访问页面呢?

这样做是为了避免其他人把未备案的域名解析到自己的服务器 IP,同时也避免跳过https证书进行访问.
而导致服务器被断网,我们可以通过禁止使用 ip 访问的方法,防止此类事情的发生。

方法一:

在 server 段里插入正则,非指定域名访问直接返回 403

server {
listen       80;
server_name  www.hello.com;
if ($host != ‘www.hello.com‘){
   return 403;
}

针对多个名和地址的逻辑 OR 的配置方法,如果 nginx 上联有负载均衡,请使用 $http_x_forwarded_for 参数

server {
listen      80;
server_name  aaa.test.com  bbb.test.com  222.222.222.222;
set $my_server_name ‘‘;  ##设定一个变量
##判断条件
  if ($host = ‘aaa.test.com‘){
      set $my_server_name  1;
      }
##判断条件
  if ($host = ‘bbb.test.com‘){
      set $my_server_name  1;
      }
##判断条件
  if ($host = ‘192.168.0.1‘){
      set $my_server_name  1;
      }
##判断条件,nginx上联有负载均衡
  if ($http_x_forwarded_for = ‘222.222.222.222‘){
      set $my_server_name  1;
      }
##判断条件
  if ($my_server_name != 1){
      return 403;
      }
      ......

方法二:

添加一个新的 server(注意是新增,并不是在原有的 server 基础上修改)

server {
  listen 80 default;
  server_name _;
##以下两种二选一
  rewrite ^(.\*) http://www.hello.com permanent; ##强制跳转到指定的网址
  return 403;  ##或者直接返回403
}

原来 server 里面修改 server_name

server {
    listen       80;
    server_name  www.hello.com;
    ....
}

nginx仅允许域名访问禁止IP访问

原文:https://www.cnblogs.com/jonnyan/p/13266323.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!