在一台空的 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。