iRedmail作为反向代理在另一个Nginx之后的Docker容器中运行

时间:2020-05-10 09:05:29

标签: docker nginx-config iredmail

我使用以下图像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;
}




0 个答案:

没有答案