nginx 如何禁止 ip 直接访问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
honmaple
V2EX    NGINX

nginx 如何禁止 ip 直接访问

  •  
  •   honmaple 2015-11-28 11:52:15 +08:00 8632 次点击
    这是一个创建于 3686 天前的主题,其中的信息可能已经有所发展或是发生改变。
    原谅我网上教程没看懂
    server {
    listen 80 default_server;
    server_name _;
    return 444;
    }
    server {
    listen 80 ;
    server_name xxx.xxx;

    # Handle all locations
    location / {
    # Pass the request to Gunicorn
    proxy_pass http://127.0.0.1:8000;
    proxy_redirect off;

    # Set some HTTP headers so that our app knows where the
    # request really came from
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    }
    server 加上 default_server 后报错
    nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/nginx.conf:47
    nginx: configuration file /etc/nginx/nginx.conf test failed
    如果不加那么没效果
    去掉第一个 server 直接访问 ip 会出现 Welcome to nginx 页面

    求助,环境是 python+flask+gunicorn+nginx
    25 条回复    2015-11-30 13:06:47 +08:00
    sparanoid
        1
    sparanoid  
       2015-11-28 11:53:07 +08:00
    server_name _; 的下划线改成 IP ?
    songjiaxin2008
        2
    songjiaxin2008  
       2015-11-28 11:54:57 +08:00
    发一个我的配置文件

    server
    {
    listen 80 default;
    return 400;
    }
    songjiaxin2008
        3
    songjiaxin2008  
       2015-11-28 11:55:31 +08:00
    IP 是 182.254.150.158
    honmaple
        4
    honmaple  
    OP
       2015-11-28 11:58:36 +08:00
    @sparanoid 还是不行
    honmaple
        5
    honmaple  
    OP
       2015-11-28 12:00:29 +08:00
    @songjiaxin2008 能否告知其他 server 段,我的加了 default 或者 default_server 就报错
    Starting nginx: nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/nginx.conf:42
    [FAILED]
    Pastsong
        6
    Pastsong  
       2015-11-28 12:02:21 +08:00
    nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/nginx.conf:47

    去你 nginx.conf 里看,那里是不是还有哪个 server 标了 default
    songjiaxin2008
        7
    songjiaxin2008  
       2015-11-28 12:03:36 +08:00
    @honmaple 你要把这个单独写一个在 conf 文件里面 一个 conf 里面不可以同时监听 2 次 80
    Pastsong
        8
    Pastsong  
       2015-11-28 12:05:21 +08:00
    @songjiaxin2008 当然是可以同时监听的,只要 server_name 不一样,写不同的 conf 主要是为了好管理
    songjiaxin2008
        9
    songjiaxin2008  
       2015-11-28 12:07:37 +08:00
    @Pastsong 嗯理解错了 看报错是有重复的监听 另外请教一下 开启了 SNI 的情况下 如何禁止 https 加 IP 形式的访问?
    Andy1999
        10
    Andy1999  
       2015-11-28 12:29:13 +08:00 via iPhone
    我用 iptables 干掉
    honmaple
        11
    honmaple  
    OP
       2015-11-28 12:32:21 +08:00
    @Pastsong 多谢了,我在 /etc/nginx/conf.d/里找到一个 default_server;把它去了就行
    mysteri0uss
        12
    mysteri0uss  
       2015-11-28 12:46:41 +08:00
    listen 80;

    if ( $host ~* "\d+\.\d+\.\d+\.\d+" ) {
    return 403;
    }
    Daddy
        13
    Daddy  
       2015-11-28 13:37:08 +08:00
    @songjiaxin2008 为何这么浪费一个 IP , IP 也可以做一个网站的,可节省一个域名的开支, http://107.182.182.6
    manhere
        14
    manhere  
       2015-11-28 13:49:10 +08:00 via iPhone
    @Daddy 防止别人绑定
    realpg
        15
    realpg  
    PRO
       2015-11-28 14:07:50 +08:00
    直接建立一个 hostname 为 IP 地址的虚拟主机 根目录啥也没有就行了
    thenbsp
        16
    thenbsp  
       2015-11-28 14:25:27 +08:00
    pathbox
        17
    pathbox  
       2015-11-28 14:30:52 +08:00
    你想防止这个 IP 的爬虫爬你的网站?
    ab
        18
    ab  
       2015-11-28 15:38:18 +08:00 via iPhone
    server
    {
    listen 80 default_server;
    return 500;
    }
    salmon5
        19
    salmon5  
       2015-11-28 20:44:48 +08:00
    引用大家的,最最优雅的实现:
    server
    {
    listen 80 default_server;
    return 501;
    }

    为什么 501 , taobao.com,tmall.com 都是 501 。
    salmon5
        20
    salmon5  
       2015-11-28 20:46:21 +08:00
    server {
    listen 80 default_server;
    return 501;
    }
    server {
    listen 443 ssl default_server;
    return 501;
    }
    honmaple
        21
    honmaple  
    OP
       2015-11-29 16:00:03 +08:00
    @Daddy 这个域名不错
    honmaple
        22
    honmaple  
    OP
       2015-11-29 16:01:11 +08:00
    @salmon5 @ab 多谢,已经弄好了
    honmaple
        23
    honmaple  
    OP
       2015-11-29 16:02:49 +08:00
    @pathbox 直接访问 ip 会出现 Welcome to nginx 页面这个页面,就想把它禁用了
    icedream728
        24
    icedream728  
       2015-11-30 10:34:22 +08:00
    server {
    server_name "";
    return 500;
    }
    crystone
        25
    crystone  
       2015-11-30 13:06:47 +08:00
    标记 学习了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3284 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 05:04 PVG 13:04 LAX 21:04 JFK 00:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86