Назад | Перейти на главную страницу

Обратный прокси NginX с iRedMail Apache2

На пустом хостинге VPS мне удалось запустить базовую установку iRedMail с Apache2 и LDAP, и моя roundcubemail была доступна по адресу:
https://www.mydomain.com/mail

затем я установил NginX, выключил Apache2, перенастроил iRedMail (без добавления какой-либо дополнительной записи A в запись DNS) и смог запустить его на базовой установке NginX, а также с roundcubemail, доступным по адресу:
https://mail.mydomain.com

Теперь я хочу запустить обратный прокси NginX с базовой установкой iRedMail Apache2 с 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
Заказать разрешить, запретить
Разрешить от всех
</Directory>
</VirtualHost>

и следующий файл конфигурации NginX:

/etc/nginx/sites-available/default

server {
слушаем 80 default_server;
слушайте [::]: 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;
    }

}

server {
слушайте 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.
Добрый совет.

Ваша проблема здесь:

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.