2

On an empty VPS hosting, I managed to run the base iRedMail installation with Apache2 and LDAP and my roundcubemail was accessible at:
https://www.mydomain.com/mail

then I installed NginX, shutdown Apache2, reconfigured iRedMail (without adding any extra A record in the DNS entry) and managed to run it on NginX base installation as well with roundcubemail accessible at:
https://mail.mydomain.com

Now, I want to run NginX reverse proxy with the base iRedMail Apache2 installation with roundcubemail accessible at:
https://mail.mydomain.com
and I'm kinda stuck with the following Apache2 config files:
/etc/apache2/ports.conf

Listen 8080

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

<VirtualHost *:8080>
DocumentRoot /var/www/
ServerName mail.mydomain.com

Alias / "/usr/share/apache2/roundcubemail/"
<Directory "/usr/share/apache2/roundcubemail">
Options Indexes FollowSymlinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

and following NginX config file:

/etc/nginx/sites-available/default

server {
listen 80 default_server;
listen [::]: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 {
listen 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;
   }

}

Hitting in browser:
https://mail.mydomain.com gives the usual SSL Connection Error.
Kindly advise.

1 Answer 1

0

Your problem is here:

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/;
}

You cannot use proxy_pass in a location that is not static. You should do it the other way around. Make a list of things that shall be loaded locally by nginx and then pass the location / using proxy_pass back to Apache.

3
  • I removed the faulty line in NginX default config file. So now, I get the error on the browser: This webpage has a redirect loop The webpage at https://mail.mydomain.com/ has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer. The NginX error is gone but the Apache error remains the same. I think it's some config problem with setup of iRedMail. Any clue?
    – Shah-G
    Apr 18, 2014 at 5:10
  • The Apache2 error is: Thu Apr 17 17:41:19.353488 2014] [mpm_prefork:notice] [pid 10111] AH00169: caught SIGTERM, shutting down [Thu Apr 17 17:41:20.526067 2014] [mpm_prefork:notice] [pid 10199] AH00163: Apache/2.4.6 (Ubuntu) OpenSSL/1.0.1e mod_wsgi/3.4 Python/2.7.5+ configured -- resuming normal operations [Thu Apr 17 17:41:20.526144 2014] [core:notice] [pid 10199] AH00094: Command line: '/usr/sbin/apache2'
    – Shah-G
    Apr 18, 2014 at 5:12
  • @Shah-G that's not an apache error, those are just lines that indicates the apache process was shutdown and then it was started again. By the way, in Apache, directives like , Order, Allow, Deny are all deprecated and belong to 2.2 (only available if you have loaded mod_acces_compat for compatibility, you should not use them, and probably neither you should use mpm_prefork. Also if you are the admin of the site you don't need to use htaccess so setting "AllowOverride none" would be a better choice. Jun 16, 2021 at 6:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.