DirectAdmin through a reverse proxy

how to run directddmin through a reverse proxy

how to run directddmin through a reverse proxy

Apache Proxy Module

/usr/sbin/httpd -l | grep mod_proxy
  mod_proxy.c
  mod_proxy_connect.c
  mod_proxy_ftp.c
  mod_proxy_http.c
  mod_proxy_fcgi.c
  mod_proxy_scgi.c
  mod_proxy_uwsgi.c
  mod_proxy_fdpass.c
  mod_proxy_wstunnel.c
  mod_proxy_ajp.c
  mod_proxy_balancer.c
  mod_proxy_express.c
  mod_proxy_hcheck.c

Create a domain or sub.domain.com on DirectAdmin

Modify httpd.conf for that user

for port 80

<VirtualHost 5.63.13.22:80 >
	  ServerName www.directadmin.shakiba.net
	  ServerAlias www.directadmin.shakiba.net directadmin.shakiba.net 
    ProxyRequests Off
    ProxyPass / http://localhost:2222/
    ProxyPassReverse / http://localhost:2222/

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

for port 443

<VirtualHost 5.63.13.22:443 >
  	SSLEngine on
  	SSLCertificateFile /etc/httpd/conf/ssl.crt/dalogin.crt
  	SSLCertificateKeyFile /etc/httpd/conf/ssl.key/dalogin.key
  	SSLCACertificateFile /etc/httpd/conf/ssl.crt/dalogin.ca
  	ServerName www.directadmin.shakiba.net
  	ServerAlias www.directadmin.shakiba.net directadmin.shakiba.net
  
    # you have other code
    # you have other code
    # you have other code
    
    # Additional parameters for Apache 2.4
    SSLProxyVerify none
    SSLProxyCheckPeerCN Off
    SSLProxyCheckPeerName Off
    ProxyPreserveHost Off

    ProxyRequests Off
    ProxyPass / http://localhost:2222/
    ProxyPassReverse / http://localhost:2222/

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

note

if we have more than one application to proxy for (here it is DA) it is better to use <location> directive in Apache configuration file like so

    ProxyRequests Off
    
    # first location for root /
    <Location />
        ProxyPass  http://localhost:2222/
        ProxyPassReverse  http://localhost:2222/
    </Location>
    
    # second location for /phpmyadmin
    <Location /phpmyadmin>
        ProxyPass http://localhost/phpmyadmin/
        ProxyPassReverse http://localhost/phpmyadmin/
    </Location>

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}/$1
</VirtualHost>

Disable check_referer in directadmin.conf

cd /usr/local/directadmin/conf/
vim directadmin.conf

# add
check_referer=0

# save and quit

Restart DA and HTTPD

systemctl restart httpd
systemctl restart directadmin

Screenshots

before login

after login

references

Last updated

Was this helpful?