i am try to run 2 apache2 web servers from one external ip. example: i want to be able to type in www.metrikcorp.com and go to apache server1 or i want to type in admin.metrikcorp.com and go to apache server2
With the power of Apache’s reverse proxy and virtual hosts, you are able to get around the limitations of hosting multiple physical servers behind a single public IP.
How To Setup Apache Virtual Host Configuration 1. Uncomment httpd-vhosts.conf in httpd.conf 2. Setup virtual hosts Modify the httpd-vhosts.conf as shown below to setup named-based virtual host setting for two hosts. NameVirtualHost *:80 – Indicates that all the name-based virtual hosts will be listening on the default port 80 <VirtualHost *:80> </VirtualHost> – Enclose all the apache configuration parameters for each and every virtual host between these VirtualHost tags. Any apache directives can be used within the virtualhost container. In the following example, we are setting up virtual host for name1.com and name2.com listening on the same port 80. So, there will be two <VirtualHost *:80> </VirtualHost>, one for each website. When you go to name1.com, the files under /usr/local/apache2/docs/name1 will be served by Apache; and the access_log and error_log for this site will go under /usr/local/apache2/logs/name1 # vi /usr/local/apache2/conf/extra/httpd-vhosts.conf[/SIZE][/SIZE] [SIZE=6][SIZE=4]NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin hasan@name1.com DocumentRoot "/usr/local/apache2/docs/name1" ServerName name1.com ServerAlias www.name1.com ErrorLog "logs/name1/error_log" CustomLog "logs/name1/access_log" common </VirtualHost> <VirtualHost *:80> ServerAdmin hasan@name2.com DocumentRoot "/usr/local/apache2/docs/name2" ServerName name2.com ServerAlias www.name2.com ErrorLog "logs/name2/error_log" CustomLog "logs/name2/access_log" common </VirtualHost> Code (markup): 3. Check VirtualHost Configuration Syntax Verify virtual configuration syntax using “httpd -S” as shown below. When everything is setup properly, it just displays “Syntax OK”. # /usr/local/apache2/bin/httpd -S[/SIZE][/SIZE] [SIZE=6][SIZE=4]VirtualHost configuration: Syntax OK Code (markup): When something is not configured properly, it will display warning message, including “directory does not exit” message as shown below. # /usr/local/apache2/bin/httpd -S[/SIZE][/SIZE] [SIZE=6][SIZE=4]Warning: DocumentRoot [/usr/local/apache2/docs/name2] does not exist Warning: ErrorLog [/usr/local/apache2/logs/name1] does not exist Syntax OK Code (markup): 4. Restart the Apache and test # /usr/local/apache2/bin/apachectl restart Code (markup):
http://httpd.apache.org/docs/2.2/vhosts/examples.html Has some beautiful examples, tutorials, and documentation to do what you need to do.
i can get the vhost to work and i can get my first server by typing www.metrikcorp.com. but i still cant figure out how to get it to reach my second server at admin.metrikcorp.com. i dont undestaned how to access second server with the vhost cause if i just put in the local ip for that server it wont work for the outside world. <VirtualHost 192.168.1.4:80> # The ServerName directive sets the request scheme, hostname and port th$ # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin webmaster@localhost ServerName metrikcorp.com ServerAlias www.metrikcorp.com DocumentRoot /var/www/metrikcorp.com/public_html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost> <VirtualHost 192.168.1.10:80> ServerAdmin webmaster@localhost ServerName admin.metrikcorp.com ServerAlias admin.metrikcorp.com DocumentRoot /var/www </VirtualHost>
this is how my config is set u. <VirtualHost 192.168.1.4:80> ServerAdmin webmaster@localhost ServerName metrikcorp.com DocumentRoot /var/www/metrikcorp.com/public_html <Directory /> Options FollowSymLinks AllowOverride ALL </Directory> <Directory /var/www/metrikcorp.com/public_html> Options Indexes FollowSymLinks MultiViews AllowOverride ALL Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost> <VirtualHost 192.168.1.10:80> ServerAdmin webmaster@localhost ServerName admin.metrikcorp.com DocumentRoot /var/www/admin.metrikcorp.com/public_html <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www/admin.metrikcorp.com/public_html/> Options -Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> but when i reload apache i get this error The apache2 configtest failed. Not doing anything. Output of config test was: AH00112: Warning: DocumentRoot [/var/www/admin.metrikcorp.com/public_html] does not exist dont understand what i am doing wrong any advice would be nice. Thanks
Hey thanks for the info. This is the code i tried to use" NameVirtualHost *:80 <VirtualHost 192.168.1.4:80> ServerAdmin webmaster@localhost ServerName metrikcorp.com DocumentRoot /var/www/metrikcorp.com/public_html <Directory /> Options FollowSymLinks AllowOverride ALL </Directory> <Directory /var/www/metrikcorp.com/public_html> Options Indexes FollowSymLinks MultiViews AllowOverride ALL Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> <VirtualHost 192.168.1.10:80> ServerAdmin webmaster@localhost ServerName admin.metrikcorp.com DocumentRoot /var/www/admin.metrikcorp.com/public_html <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www/admin.metrikcorp.com/public_html/> Options -Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> this is what i get when i reload apache. did i put it in wrong? Output of config test was: AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/sites-enabled/000-default.conf:1 AH00112: Warning: DocumentRoot [/var/www/admin.metrikcorp.com/public_html] does not exist AH00526: Syntax error on line 53 of /etc/apache2/sites-enabled/000-default.conf: Either all Options must start with + or -, or no Option may. Action 'configtest' failed. Thanks!