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


    为什么要禁止 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;
        ....
    }
    
  • 相关阅读:
    IDEA常用快捷指令整理
    Python dict 字典
    内联函数
    【MFC】编辑框 CEdit Ctrl控件自动换行设置
    mysql 多sql文件恢复方案
    Linux: 用64位的系统,能编译32位的程序吗?
    C++ 遍历数组
    工业现场传感器传感器为什么采用电流形式输出?
    【转】电磁阀、电磁铁的工作原理说明
    PCB板强弱电隔离距离不够导致损坏和问题检查记录
  • 原文地址:https://www.cnblogs.com/jonnyan/p/13266323.html
Copyright © 2020-2023  润新知