将nginx config server_name重定向到自定义404错误页面

时间:2014-04-16 00:10:02

标签: redirect nginx

我是nginx配置的新手,到目前为止已经花了很多时间在Google上搜索。我试图创建一个非常基本的nginx配置文件,用于"重定向"服务器。

用户需要通过A-record将裸域(example.com)指向我的重定向服务器IP地址,以及' www'由CNAME记录到另一台服务器。

重定向服务器的目的是执行301重定向任何/通配符裸域返回到' www'域的版本,以便我的其他服务器可以正确处理。

但我也想抓住任何配置错误的网站。通过A-record指向我的服务器IP的域,只需将它们定向到重定向服务器上的自定义错误页面,并进一步说明如何为我的服务正确设置其帐户。

这就是我所拥有的。 它可以工作,但由于我不熟悉编写配置,我想知道是否有更好的方法来处理重定向到第一个服务器块中的自定义错误页面。 TIA!

#redirect to error page if begins with 'www.'

server {
    listen 80;
    server_name ~^www.; #only matches if starts with 'www.'. Is this good enough?
    rewrite ^(.*)$ /404.html; #is this the correct way to direct to a custom error page?

    error_page 404 /404.html;

    location  = /404.html {
        root /usr/share/nginx/html;
       }
    }

#no match, so redirect to www.example.com

server {
    listen 80 default_server;
    rewrite ^(.*)$ $scheme://www.$host$1 permanent;
}

1 个答案:

答案 0 :(得分:3)

前缀/后缀服务器名称匹配为faster and easier than regexp

此外,没有理由使用重写。你想要返回404,所以要做到这一点,nginx将完成剩下的工作。顺便说一句,如果重写,您将返回内容为200 OK而不是/404.html的{​​{1}}。

所以这是:

404 Not Found