5
votes

So I have this problem...

I use WAMP and have set up perfectly working Virtual Hosts in the past, but now I have come to something I never foresaw.

I am trying to do this:

Access C:\wamp\www through http://localhost

Access D:\somethingelse through http://localhost:8080 OR http://something.dev

I much prefer using the proper http://something.dev, as the working site is http://something.co, and so I can keep them separate.

I have followed guides and read forum posts, but all I have manages to do so far is this:

Access C:\wamp\www through http://localhost OR http://something.dev

Access D:\somethingelse through http://localhost:8080 OR http://something.dev:8080

Anybody got any idea how you would do this? Here's my VirtualHost Code:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "C:\wamp\www"
ServerName localhost
ServerAlias www.localhost.com
ErrorLog "logs/localhost-error.log"
CustomLog "logs/localhost-access.log" common
</VirtualHost>

<VirtualHost *:8080>
ServerAdmin webmaster@something
DocumentRoot "D:/something/www"
ServerName something.dev
ServerAlias www.something.dev
ErrorLog "logs/something-error.log"
CustomLog "logs/something-access.log" common
<directory "D:/something/www">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order Allow,Deny
    Allow from all
</directory>
</VirtualHost>

And in httpd.conf I have this

Listen *:80
Listen *:8080

And my hosts file is working and points both of these to 127.0.0.1

(The reason I want to do this is that when I code on my machine I use the http://something.dev, but I run Livereload Windows, and test my website simultaneously on an iPhone and iPad on the same local network, but without any access to iOS's equivalent of the hosts file. It also allows me to open up only a specific part of my server to the internet, through port forwarding on my router.)

4

4 Answers

13
votes

I suppose you have solved the issue. Anyway is good to share some nice information on how to set up multiple Virtual Hosts in Wamp. This is working for me:

http://www.kristengrote.com/blog/articles/how-to-set-up-virtual-hosts-using-wamp

In my case I am working with ports 8080 and 8181. 8080 is redirecting to a subfolder under c:\wamp\www\myfolder, while 8181 is redirecting to root c:\wamp\www.

To make 8181 work I had to edit httpd-vhosts.conf, hosts (in \drivers\etc folder) and httpd.conf.

In httpd.conf my Apache is listening:

Listen 8080
Listen 8181

also I uncommented:

Include conf/extra/httpd-vhosts.conf

my root is pointing to

DocumentRoot "c:/wamp/www/myfolder"

root directory is configured as:

<Directory "c:/wamp/www">
    Options Indexes FollowSymLinks
    AllowOverride All
     Order Deny,Allow
     Deny from all
     Allow from 127.0.0.1
     Allow from ::1
     Allow from localhost
</Directory>

and added:

<VirtualHost *:8181>
DocumentRoot "C:\wamp\www"
ServerName name-of-my-fake-server
</VirtualHost>

in httpd-vhosts.conf I have set:

NameVirtualHost *:8181

in hosts (c:\windows\system32\drivers\etc) I have added:

127.0.0.1       localhost
127.0.0.1       name-of-my-fake-server #My Test Site

Doing that I have now two ports working 8080 and 8181: so 8080 points to directory "c:\wamp\www\myfolder" and the other port 8181 points to my root folder "c:\wamp\www\"

1
votes

Using * as the hostname requires the use of NameVirtualHost:

NameVirtualHost *:80
NameVirtualHost *:8080
0
votes

For those with MAMP, edit the httpd.conf

nano /Applications/MAMP/conf/apache/httpd.conf

Add Listen for each port

Listen 80
Listen 8080

And the ServerName too

ServerName localhost:80
ServerName localhost:8080

Once done that, edit httpd-vhosts.conf

nano /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Define NameVirtualHost

NameVirtualHost *:80
NameVirtualHost *:8080

And the VirtualHost's

<VirtualHost *:80>
    DocumentRoot "/Users/yourUser/path/project1"
    ServerName project1.local
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "/Users/yourUser/path/project2"
    ServerName project2.local
</VirtualHost>

Of course you need to have project1.local and project2.local in your hosts file

sudo nano /etc/hosts

And add

127.0.0.1 project1.local project2.local

Restart MAMP and you could access your vhost by

project1.local
project2.local:8080

project2 could be access also in your network or with a external IP (e.g to test from a different device like a mobile phone). Assuming your IP is 192.168.1.10

192.168.1.10:8080
0
votes

The question is a little about it. But I assumed that it's near there and may be helpful for somebody.

Recently I met the problem when I need to get access to a few resources (debian repository, my website and phpmyadmin) by one external IP address and port.

After learning the problem I found technology named as reverse proxy. It like proxy but server is accepting all connection from many users and redirect to one target (your server).

I made simple Docker image and docker-compose file and push that to github.com/urpylka/docker-nginx-reverse-proxy and hub.docker.com.

Config file is very simple:

server {
    listen          80;
    server_name     smirart.ru robotic.lol;
    location / {
        proxy_pass  http://robotic.lol:1080/;
    }
}

server {
    listen          80;
    server_name     repo.smirart.ru;
    location / {
        proxy_pass  http://8.8.8.8:2080/;
    }
}

You can use that for few web-servers running by different IP.