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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .