V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
honmaple
V2EX  ›  NGINX

nginx 如何禁止 ip 直接访问

  •  
  •   honmaple · 2015-11-28 11:52:15 +08:00 · 8263 次点击
    这是一个创建于 3301 天前的主题,其中的信息可能已经有所发展或是发生改变。
    原谅我网上教程没看懂
    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  
    MOD
       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  
       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   ·   实用小工具   ·   5541 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 02:10 · PVG 10:10 · LAX 18:10 · JFK 21:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.