如何返回找不到域的服务器,但允许子目录正常显示

时间:2019-01-22 22:37:01

标签: ubuntu nginx ubuntu-18.04

大多数人通常都找到一种“不”显示无法连接到服务器浏览器错误的方法,我有兴趣在哪里显示它。

我有一个域名为example.com的YOURLS链接缩短器。主页显示403禁止Nginx通知。 example.com/admin显示工作中的管理站点。这将不会公开出现,并且如果有人去example.com应该显示无法连接到服务器,那么人们就不知道该站点存在(是的,他们可以进行whois或dns查找,但不必为此担心)。 / p>

我可以将nginx服务器根目录更改为一个随机位置,它将显示所需的错误,但是example.com/admin无法正常工作。有什么简单的解决方法吗?在nginx配置中,有一行:try_files $uri $uri/ /yourls-loader.php$is_args$args;

是否可以进行更改以阻止example.com显示任何内容,但允许example.com/admin继续工作?同样可以,我可以输入一个空白的index.html,但这会显示一个白页,该页面试图显示如果您输入的网站没有网站,则会看到标准的浏览器错误。

也许有个名字,但不确定如何描述它,因此无法找到解决这个可能很简单的问题的方法。

3 个答案:

答案 0 :(得分:1)

当域的根被调用时,您很可能会返回444(关闭连接)。

类似以下内容会在源头关闭连接

location = / {
    return 444;
}

它仍然允许/ admin位置块投放而不会出现问题。

444是仅nginx的内部代码,可有效关闭连接并强制显示“无”。我建议您使用类似的测试块进行尝试

location = /444test {
    return 444;
    access_log off;
}

然后自己看看。

答案 1 :(得分:0)

在这种情况下,我通常使用HTTP 410 Gone:)

您可以使用以下内容:

server {
    ...
    location / {
        return 403;
    }
    location /admin {
        try_files $uri $uri/ /yourls-loader.php$is_args$args;
    }
    location ~ \.php$ {
        # your fastcgi or backend config for PHP scripts here
    }
}

答案 2 :(得分:0)

您可以这样显示您的自定义错误页面:

在位置int conversionFunction(int num, int base) { if (num == 0) return 0; int x = num % base; num /= base; if (x < 0) num = num + 1; conversionFunction(num, base); if (x < 0){ cout << x+(base * -1); } else{ cout << x; return x; } } 中创建一个/var/www/error/文件(您可以在其中显示您自己的错误),然后使用以下代码显示该文件:

custom_403.html