【问题标题】:remove default nginx welcome page when access directly from ip address直接从ip地址访问时删除默认的nginx欢迎页面
【发布时间】:2013-10-13 11:36:17
【问题描述】:

在我的 ubuntu 服务器上,我使用本文安装 nginx 并设置虚拟主机。 https://www.digitalocean.com/community/articles/how-to-set-up-nginx-virtual-hosts-server-blocks-on-ubuntu-12-04-lts--3

虚拟主机的域名类似于 www.example.com。当我访问 www.example.com 时,我可以看到我的应用程序的索引页面。但是,当我转到真实IP地址时,我仍然看到了nginx欢迎页面。如果有人使用 IP 地址访问我的网站,我该怎么做才能删除此欢迎页面或指向 www.example.com?

我设置了一条 A 记录,将 ip xxx.xxx.xxx.xxx 指向 www.example.com。

【问题讨论】:

    标签: ubuntu nginx


    【解决方案1】:

    我认为当您第一次设置 nginx 时,它带有一个“默认”虚拟主机。你试过删除它吗?您是否尝试删除符号链接? 第三种选择是添加“全部拒绝”;在默认虚拟主机的位置 / 上。

    我不确定这是否可行,我现在无法对其进行测试。如果上述方法不起作用,试试这个:http://nginx.org/en/docs/http/request_processing.html#how_to_prevent_undefined_server_names

    http://your-server-ip/ 是一个未定义服务器名称的请求。您应该能够通过以下方式阻止它:

    server {
        listen      80;
        server_name "";
        return      444;
    }
    

    【讨论】:

    • 我已经从 /etc/nginx/sites-enabled/ 中删除了默认的一个。
    • 第三个选项有效。我只是将这个未定义的服务器提供给我的虚拟主机配置,然后重新启动 nginx。它有效!
    【解决方案2】:

    您需要删除文件default,位于/etc/nginx/sites-enabled

    rm /etc/nginx/sites-enabled/default
    

    然后重启nginx:

    service nginx reload
    

    【讨论】:

    • 它解决了我的问题。但是,我在命令前加上了sudo。干杯:)
    • 如果禁用默认站点,nginx 将使用第一个遇到的匹配服务器块作为备用站点。
    【解决方案3】:

    如果要删除默认的 nginx 服务器块,可以使用以下命令:

    sudo unlink /etc/nginx/sites-enabled/default
    

    这将从文件夹中删除符号链接:/etc/nginx/sites-enabled/

    文件/etc/nginx/sites-available/default 仍然存在,但不再处于活动状态。

    如果您有另一个服务器块来处理您的域,例如example.com 那里有一些网站,而不是如果有人访问您服务器的 IP 地址,那么您的网站 for example.com 将被提供。

    如果您有多个域,则需要多个服务器块。为确保这些块之一用作默认块,您可以编辑 /etc/nginx/sites-available/example.com 以在 listen 指令中添加 default_server 选项,例如:

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
    
        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;
    
        server_name _;
    
        location / {
                try_files $uri $uri/ =404;
        }
    }
    

    【讨论】:

    • default_server 添加到端口 80 对我来说是这样的。
    【解决方案4】:

    配置为

    server {
        listen      80;
        server_name xxxx;
        return      444;
    }
    

    我得到所有 uri 的 502,包括我的应用程序 url。


    我没有在/etc/nginx 下找到sites_enabled 文件夹,而是我的默认站点位于/usr/share/nginx/html

    所以我在

    中创建了另一个空白页面

    /usr/share/nginx/html/blank

    创建一个空白 index.html

    # echo >> index.html
    

    然后编辑default.conf

    location / {
        root   /usr/share/nginx/html/blank;
        index  index.html ;
    }
    

    然后首页变成空白,隐藏nginx信息。


    顺便说一句,如果你删除了

    location / {
        root   /usr/share/nginx/html/blank;
        index  index.html ;
    }
    

    或设置

    location / {
        try_files $uri $uri/ = 404;
    }
    

    首页会出现404,但是显示“Nginx版本”,不好。

    【讨论】:

    • 如果我要付出这么多的努力,最好通过删除 Nginx 版本来确保安全,因此 +1 为空白 index.html
    【解决方案5】:

    如果你删除了/etc/nginx/sites-available下的default重启nginx,欢迎页面还在显示,那么看看/etc/nginx/conf.d下是否有default.conf删除后重启nginx。

    【讨论】:

    • 我都已经做了,但我在这里是因为页面仍然显示。
    【解决方案6】:

    disable 一个站点,例如default

    rm /etc/nginx/sites-enabled/default
    

    /etc/nginx/sites-enabled/default 只是/etc/nginx/sites-available/default 的符号链接。所以删除它不会删除原来的。

    enable某网站:

    cd /etc/nginx/sites-enabled/
    ln -s /etc/nginx/sites-available/<mysite>
    

    最后重新加载更改:

    sudo systemctl reload nginx.service
    

    【讨论】:

      【解决方案7】:

      默认虚拟主机一般位于/etc/nginx/conf.d//etc/nginx/sites-enabled/(作为符号链接)

      从所有可能的位置删除默认虚拟主机:

      rm -rf /etc/nginx/conf.d/default.conf
      rm -rf /etc/nginx/sites-enabled/default.conf
      rm -rf /etc/nginx/sites-available/default.conf
      

      然后重启nginx:

      service nginx restart
      

      如果不起作用,请检查您在 /etc/nginx/nginx.conf 上的包含。

      【讨论】:

        【解决方案8】:

        就我而言,我必须删除 两个 指向默认站点的链接:

        sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
        sudo rm /etc/nginx/sites-enabled/default
        

        【讨论】:

          【解决方案9】:

          以上建议对我有用,默认服务器为我阻止了 GitLab。如果您想保留default 文件以供以后使用而不是删除它,请使用以下行 在 /etc/nginx/nginx.conf 中可以通过在其前面放置 # 来进行评论:

          #    include /etc/nginx/sites-enabled/*;
          

          之后可以重新加载nginx

          nginx -s reload
          

          或者从系统控制重启

          sudo systemctl restart nginx
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-11-25
            • 2012-08-02
            • 2018-02-04
            • 2014-09-03
            • 2013-02-03
            • 1970-01-01
            • 2019-06-02
            • 1970-01-01
            相关资源
            最近更新 更多