Nginx使用default_server和一个ipaddress上的多个域

时间:2013-04-25 12:50:56

标签: nginx

我刚刚安装了nginx,并为test.example.com创建了一个新配置。 哪个有用。

但是example.org也指向我的服务器。现在,如果我去example.org,nginx会将我重定向到test.example.com。

我已经读过你需要创建一个默认的服务器条目,例如返回444; 这就是我做的。 这是我对该网站的配置:

server {
    listen       IP:80;
    server_name test.example.com;
    server_tokens off;
    root /nowhere;
    rewrite ^ https://test.example.com$request_uri permanent;
}
server {
    listen IP:443;
    server_name test.example.com;
    server_tokens off;
    root [...];

[...]
}

我之前在nginx.conf中添加的默认服务器条目(也尝试过)“include / etc / nginx / sites-enabled / *;”

server {
    # use default instead for nginx 0.7.x, default_server for 0.8.x+
    listen IP:80 default_server;      

    server_name _;
    return 444;
}

对我来说,这看起来是正确的。但我仍然会从example.org重定向到test.example.com。

1 个答案:

答案 0 :(得分:0)

您不应该在默认设置中设置server_name。它确实需要在nginx配置中的实际服务器块之前。

444也是一个奇怪的错误。您应该返回404以指示找不到服务器,而不是自定义Nginx错误代码。

修改

对于SSL无法正常工作,您似乎没有在配置文件中实际设置SSL证书或打开ssl。

server {
    listen 443 default_server ssl;
    ssl_certificate      /usr/local/nginx/conf/cert.pem;
    ssl_certificate_key  /usr/local/nginx/conf/cert.key;  

    server_name test.example.com;
    server_tokens off;
    root [...];
}