nginx:为每个域名(通配符域名?)设置一个网络邮件

nginx:为每个域名(通配符域名?)设置一个网络邮件

我想mail.使用 nginx 为我服务器上的每个域设置一个 webmail 子域。

它似乎可以工作,https://mail.mydomain.com但我也可以访问服务器的 IP 地址来访问网络邮件(https://xxxx),这是我们不希望看到的。

这是我的 Webmail 的配置文件:

###
# Webmail (Rainloop)
###
server {
    listen 80;
    server_name mail*.;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name mail*.;

    ssl_certificate     /etc/ssl/nginx/server.crt;
    ssl_certificate_key /etc/ssl/nginx/server.key;
    ssl_protocols       SSLv3 TLSv1;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    access_log /var/log/nginx/app-webmail.access.log;
    error_log /var/log/nginx/app-webmail.error.log;

    location / {
        root /var/www/rainloop;
        index index.html index.htm index.php;

        location ~ [^/]\.php(/|$) {
            include fcgi.conf;
            fastcgi_pass unix:/var/run/php-fcgi.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }

        location ^~ /data {
            deny all;
        }
    }
}

任何想法?

答案1

基于这个答案默认 Nginx 配置已更改如下:

/etc/nginx/nginx.conf

server {
    listen       80;
    server_name  <ip_address_nginx_server>;
    root         /usr/share/nginx/html;

    #charset koi8-r;

    #access_log  /var/log/nginx/host.access.log  main;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    }

    # redirect server error pages to the static page /40x.html
    #
    error_page  404              /404.html;
    location = /40x.html {
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
    }

    return 403;
}

server {
    listen       80  default_server;
    server_name  mydomain.com;
    }
}

一旦 Nginx 服务器重新启动并且导航到ip_address_nginx_server403 就会返回,同时http://example.com可以访问。

答案2

根据 Nginx 文档,可以使用此类通配符服务器名称

server {
    listen       80;
    server_name  mail.*;
    ...
}

但是,您拥有的mail*.不是mail.*那里,这确实是另一回事。

相关内容