我使用以下图像lejmr/iredmail-docker在Docker容器中运行iRedMail 根据官方指示,可以启动为
docker run -p 8079:80 -p 442:443 \
-h mail.my-site.com \
-e "MYSQL_ROOT_PASSWORD=pwd" \
-e "SOGO_WORKERS=1" \
-e "TZ=Europe/Moscow" \
-e "POSTMASTER_PASSWORD={SSHA512}postpwd" \
-e "IREDAPD_PLUGINS=['reject_null_sender', 'reject_sender_login_mismatch', 'throttle', 'amavisd_wblist', 'sql_alias_access_policy']" \
-v /srv/iredmail/mysql:/var/lib/mysql \
-v /srv/iredmail/vmail:/var/vmail \
-v /srv/iredmail/clamav:/var/lib/clamav \
--name=iredmail lejmr/iredmail:mysql-latest
上面的命令工作正常,我可以看到在终端中运行了docker容器,所有服务都已正确启动。
我想通过第一个代理将请求作为纯http传递给邮件服务器,而不是处理docker容器lejmr / iredmail-docker中的https连接。
这是我的nginx.conf,它根本不会重定向到iredmail网站。
关于如何将http邮件流量传递到主机上的docker中运行的邮件服务器的任何想法?
load_module /usr/lib/nginx/modules/ngx_stream_module.so;
user www-data;
worker_processes 1;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
upstream mail {
server 127.0.0.1:8079 fail_timeout=0;
}
server {
server_name mail.my-site.com;
listen 80;
location / {
# Use internal Docker DNS resolver IP
# Internal AWS DNS resolver IP is your AWS VPC network range plus two
resolver 127.0.0.11 valid=30s;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect http:// https://;
# Define upstream in variable to resolve 502 Bad Gateway error if the host is unavailable
set $upstream_mail mail;
proxy_pass http://$upstream_mail;
# Required for new HTTP-based CLI
proxy_http_version 1.1;
proxy_request_buffering off;
proxy_buffering off; # Required for HTTP-based CLI to work over SSL
}
}
# another modules with ssl behind this proxy
include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;
}