我想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_server
403 就会返回,同时http://example.com
可以访问。
答案2
根据 Nginx 文档,可以使用此类通配符服务器名称。
server {
listen 80;
server_name mail.*;
...
}
但是,您拥有的mail*.
不是mail.*
那里,这确实是另一回事。