Я хочу настроить веб-почту mail.
поддомен для каждого домена на моем сервере, используя nginx.
Вроде работает на https://mail.mydomain.com
но я также могу получить доступ к веб-почте, посетив IP-адрес сервера (https: //x.x.x.x), чего не хотят.
Вот мой файл conf для электронной почты:
###
# 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;
}
}
}
Любая идея?
Согласно документации Nginx, такие подстановочные знаки можно использовать в имена серверов.
server {
listen 80;
server_name mail.*;
...
}
Однако у вас есть mail*.
вместо того mail.*
там, а это совсем другое дело.
На основе этот ответ Конфигурация 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
доступен.