Difference between revisions of "Apache2"

From RHS Wiki
Jump to navigation Jump to search
Tag: visualeditor
m
Tag: visualeditor
 
(2 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
Paths:<br />
 
Paths:<br />
 
/etc/apache2/sites-available<br />
 
/etc/apache2/sites-available<br />
/etc/apache2/sites-enabled (symbolic links to sites-available/*.conf files)<br />
+
/etc/apache2/sites-enabled (symbolic links to sites-available/*.conf files)<br /><syntaxhighlight lang="bash">
 +
sudo apache2ctl -t -D DUMP_VHOSTS
 +
sudo apache2ctl configtest
 +
sudo a2enmod ssl
 +
</syntaxhighlight>
  
 
==Virtual Hosts==
 
==Virtual Hosts==
Line 28: Line 32:
 
to the public ip of this server<br />
 
to the public ip of this server<br />
  
Basic SSL VirtualHost:
+
Basic SSL VirtualHost:<syntaxhighlight lang="apache">
<nowiki><VirtualHost *:80>
+
<VirtualHost *:80>  
            ServerName home.rra.lan
+
    ServerName home.rra.lan  
            ServerAdmin webmaster@rra.lan
+
    ServerAdmin webmaster@rra.lan  
            DocumentRoot /var/www/home.rra.lan
+
    DocumentRoot /var/www/home.rra.lan  
           
+
    Redirect permanent / https://home.rra.lan  
            Redirect permanent / https://home.rra.lan
+
    ErrorLog ${APACHE_LOG_DIR}/error.log  
            ErrorLog ${APACHE_LOG_DIR}/error.log
+
    CustomLog ${APACHE_LOG_DIR}/access.log combined  
            CustomLog ${APACHE_LOG_DIR}/access.log combined
+
</VirtualHost>  
    </VirtualHost>
+
<VirtualHost *:443>  
    <VirtualHost *:443>
+
    ServerName home.rra.lan  
            ServerName home.rra.lan
+
    ServerAdmin webmaster@rra.lan  
            ServerAdmin webmaster@rra.lan
+
    DocumentRoot /var/www/home.rra.lan  
            DocumentRoot /var/www/home.rra.lan
+
    ErrorLog ${APACHE_LOG_DIR}/error.log  
            ErrorLog ${APACHE_LOG_DIR}/error.log
+
    CustomLog ${APACHE_LOG_DIR}/access.log combined  
            CustomLog ${APACHE_LOG_DIR}/access.log combined
+
    SSLEngine on  
           
+
    SSLCertificateKeyFile /etc/ssl/private/home.rra.lan.key  
            SSLEngine on
+
    SSLCertificateFile /etc/ssl/certs/home.rra.lan.crt  
            SSLCertificateKeyFile /etc/ssl/private/home.rra.lan.key
+
    SSLCertificateChainFile /etc/ssl/certs/FreeIPA-CA.crt  
            SSLCertificateFile /etc/ssl/certs/home.rra.lan.crt
+
</VirtualHost>
            SSLCertificateChainFile /etc/ssl/certs/FreeIPA-CA.crt
+
</syntaxhighlight>  
    </VirtualHost>
+
     
    </nowiki>
 
  
 
==Redirect HTTP to HTTPS==
 
==Redirect HTTP to HTTPS==
Line 77: Line 80:
 
Protect with the directory directive:
 
Protect with the directory directive:
 
  <nowiki><Directory "/usr/local/apache/htdocs/secret">
 
  <nowiki><Directory "/usr/local/apache/htdocs/secret">
        AuthType Basic
+
            AuthType Basic
        AuthName "Restricted Files"
+
            AuthName "Restricted Files"
        # (Following line optional)
+
            # (Following line optional)
        AuthBasicProvider file
+
            AuthBasicProvider file
        AuthUserFile "/usr/local/apache/passwd/passwords"
+
            AuthUserFile "/usr/local/apache/passwd/passwords"
        # Require user rbowen
+
            # Require user rbowen
        Require valid-user
+
            Require valid-user
    </Directory></nowiki>
+
        </Directory></nowiki>
  
 
==Reverse Proxy==
 
==Reverse Proxy==

Latest revision as of 09:53, 24 February 2020

Web Server for linux.
Paths:
/etc/apache2/sites-available

/etc/apache2/sites-enabled (symbolic links to sites-available/*.conf files)

sudo apache2ctl -t -D DUMP_VHOSTS
sudo apache2ctl configtest
sudo a2enmod ssl

Virtual Hosts

Apache allows to have multiple web sites on the same server. To do this go to sites-available and create a
.conf file for each host you whant containing the following:

 <VirtualHost *:80>
    ServerAdmin rafael@herrerosolis.com
    DocumentRoot /var/www/webfolder
    ServerName www.yourwebpagename.com
    ServerAlias www.yourwebpagename.com

    ErrorLog /var/www/yourwebfolder/logs/error.log
    
    # Posible values include: debug, info, notice, warn, error, crit.
    # alert, emerg.

    CustomLog /var/www/yourwebfolder/logs/access.log combined

 </VirtualHost>

You should also enter in your domain administration panel and create the CNAMES to redirect trafic
to the public ip of this server

Basic SSL VirtualHost:

<VirtualHost *:80> 
    ServerName home.rra.lan 
    ServerAdmin webmaster@rra.lan 
    DocumentRoot /var/www/home.rra.lan 
    Redirect permanent / https://home.rra.lan 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 
<VirtualHost *:443> 
    ServerName home.rra.lan 
    ServerAdmin webmaster@rra.lan 
    DocumentRoot /var/www/home.rra.lan 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
    SSLEngine on 
    SSLCertificateKeyFile /etc/ssl/private/home.rra.lan.key 
    SSLCertificateFile /etc/ssl/certs/home.rra.lan.crt 
    SSLCertificateChainFile /etc/ssl/certs/FreeIPA-CA.crt 
</VirtualHost>


Redirect HTTP to HTTPS

sudo a2enmod rewrite

sudo nano /etc/apache2/sites-available/redirect_HTTP_to_HTTPS.conf

<VirtualHost *:80>
    RewriteEngine on
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

    ErrorLog ${APACHE_LOG_DIR}/error.log                                                             
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost>

sudo ln -s /etc/apache2/sites-available/redirect_HTTP_to_HTTPS.conf /etc/apache2/sites-enable/redirect_HTTP_to_HTTPS.conf

Authentication

Create user account with:

htpasswd -c /usr/local/apache/passwd/passwords rbowen

Protect with the directory directive:

<Directory "/usr/local/apache/htdocs/secret">
            AuthType Basic
            AuthName "Restricted Files"
            # (Following line optional)
            AuthBasicProvider file
            AuthUserFile "/usr/local/apache/passwd/passwords"
            # Require user rbowen
            Require valid-user
        </Directory>

Reverse Proxy

a2enmod proxy proxy_http  # HTTP
a2enmod proxy proxy_ftp   # FTP
a2enmod proxy proxy_html  # rewrite HTML links in proxy address space
a2enmod proxy proxy_ajp   # Tomcat
a2enmod proxy
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect

VirtualHost ProxyPass

<IfModule mod_ssl.c>
        <VirtualHost *:443>
                ServerAdmin webmaster@rra.lan
                ServerName splunk.rra.lan

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined
                ServerAlias splunk.rra.lan
                SSLEngine on
                SSLCertificateFile      /etc/ssl/certs/splunk.rra.lan.crt
                SSLCertificateKeyFile /etc/ssl/private/splunk.rra.lan.key

                <Proxy *>
                    AddDefaultCharset Off
                    Order deny,allow
                    Allow from all
                </Proxy>

                ProxyRequests Off
                ProxyPreserveHost On
                # SSLProxyEngine on
                ProxyPass / http://0.0.0.0:8000/
                ProxyPassReverse / http://0.0.0.0:8000/

        </VirtualHost>
</IfModule>

apachectl

sudo apachectl configtest

https://httpd.apache.org/docs/2.4/programs/apachectl.html


See more options at:

https://httpd.apache.org/docs/2.4/es/howto/auth.html

https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension