Apache Http Server (httpd)
07 Jan 2017Apache Server
- Most popular web server on Internet
Install Apache WebServer
Apache Virtual Host
To run more than one site on a single machine, you need to setup virtual hosts for sites your plan to host on an apache server.
Name Based Virtual Hosts (Most Common)
- The server relies on the client to report the hostname as part of the HTTP headers. Using this technique, many different hosts can share the same IP address.
IP Based Virtual Hosts
- IP-based virtual hosting is a method to apply different directives based on the IP address and port a request is received on.
- Most commonly, this is used to serve different websites on different ports or interfaces.
Setting up Virtual Directories
Creating Virtual Host Files
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/aayushtuladhar.com.conf
<VirtualHost *:80>
ServerAdmin admin@aayushtuladhar.com
ServerName aayushtuladhar.com
ServerAlias aayushtuladhar.com *.aayushtuladhar.com
DocumentRoot /var/www/aayshtuladhar.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- ServerName - Base Domain that should match for the virtual host definition.
- ServerAlias - Lists names are other names which people can use to see that same web site.
Enable Virtual Host
sudo a2ensite example.com.conf
Disable Default Virtual Host
sudo a2dissite 000-default.conf
Restart Apache
sudo service apache2 restart # Ubuntu 15.10
sudo systemctl restart apache2 # Ubuntu 14.10 and Earlier
Reverse Proxy using Apache
A proxy server is an intermediary server that forwards requests to different servers. A reverse proxy server is a type of proxy server that typically sits behind the firewall in a private network and directs client requests to the appropriate backend server.
Common uses for reverse proxy server:
- Load Balancing
- Web Acceleration
- Security
Using mod_proxy
module, Apache Server can be used as reverse proxy to relay HTTP / HTTPS requests to other machines.
/etc/apache2/sites-available/digimarketplace-api.aayushtuladhar.com.conf
<VirtualHost *:80>
ServerAdmin hello@aayushtuladhar.com
ServerName digimarketplace-api.aayushtuladhar.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://0.0.0.0:3000
ProxyPassReverse http://0.0.0.0:3000
</Location>
</VirtualHost>
Load Balancing
BalanceMember
- Declare Balance MembersProxySet
- Sets load balancing method
<VirtualHost *:80>
# Turn off ProxyRequests to avoid any unwanted traffic
ProxyRequests off
<Proxy balancer://nodeCluster>
# NodeAPI1
BalancerMember http://10.63.76.237:8280/api
BalancerMember http://10.63.79.198:8280/api
Require all granted
ProxySet lbmethod=byrequests
</Proxy>
ProxyPass /api balancer://nodeCluster
</VirtualHost>