41

在我的 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。

4

9 回答 9

45

我认为当您第一次设置 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;
}
于 2013-10-07T01:21:09.493 回答
36

您需要删除default位于以下位置的文件/etc/nginx/sites-enabled

rm /etc/nginx/sites-enabled/default

然后重启nginx:

service nginx reload
于 2017-06-05T02:27:12.540 回答
13

如果要删除默认的 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中有选项,例如: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;
    }
}
于 2020-03-10T21:52:16.237 回答
7

配置为

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

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


我没有sites_enabled在 下找到文件夹/etc/nginx,相反,我的默认站点位于/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 版本”,这不好。

于 2019-04-12T02:24:28.493 回答
5

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

于 2018-01-12T12:24:46.530 回答
3

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
于 2019-11-14T07:18:57.187 回答
2

默认虚拟主机一般位于/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如果它不起作用,请检查您的包含。

于 2021-01-25T18:32:05.267 回答
0

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

sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
sudo rm /etc/nginx/sites-enabled/default
于 2019-12-01T19:44:43.483 回答
0

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

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

之后你可以重新加载 nginx

nginx -s reload

或者从系统控制重新启动它

sudo systemctl restart nginx
于 2020-11-11T13:12:47.140 回答