直接从ip地址访问时删除默认的nginx欢迎页面

时间:2013-10-07 00:49:46

标签: ubuntu nginx

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

9 个答案:

答案 0 :(得分:24)

我认为当您第一次设置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;
}

答案 1 :(得分:13)

您需要删除default中的文件/etc/nginx/sites-enabled

rm /etc/nginx/sites-enabled/default

然后重启nginx:

service nginx reload

答案 2 :(得分:9)

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

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

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

仍然会有文件/etc/nginx/sites-available/default,但是它将不再处于活动状态。

如果您有另一个处理您域的服务器块,例如example.com上有一些网站,如果有人访问您服务器的ip地址,则将为您提供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;
    }
}

答案 3 :(得分:3)

如果您删除了default下的/etc/nginx/sites-available并重新启动了nginx并且仍然显示了欢迎页面,那么请查看default.conf下是否有/etc/nginx/conf.d并删除它然后重启nginx。

答案 4 :(得分: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 上的包含。

答案 5 :(得分:1)

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

答案 6 :(得分:0)

配置为

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

我为所有uri(包括我的应用程序网址)得到502。


我没有在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版本”,这不是很好。

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

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

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

您可以稍后重新加载nginx

nginx -s reload

或从系统控制重新启动

sudo systemctl restart nginx