使用 iRedMail Apache2 的 NginX 反向代理

使用 iRedMail Apache2 的 NginX 反向代理

在一台空的 VPS 主机上,我设法使用 Apache2 和 LDAP 运行基本的 iRedMail 安装,并且我的 roundcubemail 可以通过以下方式访问:
https://www.mydomain.com/mail

然后我安装了 NginX,关闭 Apache2,重新配置了 iRedMail(没有在 DNS 条目中添加任何额外的 A 记录),并设法在 NginX 基础安装上运行它,并且 roundcubemail 可以通过以下方式访问:
https://mail.mydomain.com

现在,我想使用基本 iRedMail Apache2 安装运行 NginX 反向代理,并通过以下方式访问 roundcubemail:
https://mail.mydomain.com
但我有点被以下 Apache2 配置文件所困扰:
/etc/apache2/ports.conf

收听 8080

/etc/apahce2/sites-available/my-iredmail.conf

<VirtualHost *:8080>
DocumentRoot /var/www/
服务器名称 mail.mydomain.com

别名 / “/usr/share/apache2/roundcubemail/”
<Directory "/usr/share/apache2/roundcubemail">
选项索引 FollowSymlinks MultiViews
AllowOverride All
Order allow,deny
允许所有
</Directory>
</VirtualHost>

以及以下 NginX 配置文件:

/etc/nginx/sites-available/default

服务器{
监听 80 默认服务器;
监听 [::]:80;

    root /usr/share/nginx/html;
    index index.html index.htm index.php;

    server_name mydomain.com www.mydomain.com mail.mydomain.com;

    location / {
            try_files $uri $uri/ /index.html;
    }

    location ~ \.php$ {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:8080/;
    }

    location ~ /\.ht {
            deny all;
    }

}

服务器 {
监听 443 ssl;

    root /var/www;
    index index.html index.htm index.php;

    server_name mydomain.com www.mydomain.com mail.mydomain.com;

    ssl                  on;
    ssl_certificate      /etc/ssl/certs/iRedMail_CA.pem;
    ssl_certificate_key  /etc/ssl/private/iRedMail.key;
    ssl_session_timeout  5m;
    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers   on;

    location / {
            # Apache is listening here
            proxy_pass http://127.0.0.1:8080/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }

}

在浏览器中点击:
https://mail.mydomain.com 显示通常内容SSL Connection Error
请提供意见。

答案1

你的问题在这里:

location ~ \.php$ {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080/;
}

您不能在非静态位置使用 proxy_pass。您应该反过来做。列出 nginx 应在本地加载的内容,然后将location /使用 proxy_pass 传递回 Apache。

相关内容