Using port number in Windows host file
WindowsWindows Problem Overview
After installing TeamViewer, I have changed the wampserver port to 8080, so the address is http://localhost:8080.
For the host file located at C:\WINDOWS\system32\drivers\etc, I have also made the change as below
BEFORE
127.0.0.1 www.example.com
AFTER
127.0.0.1:8080 www.example.com
When I access www.example.com, it doesn't redirect to my wampserver, how can I fix it?
Windows Solutions
Solution 1 - Windows
I managed to achieve this by using Windows included Networking tool netsh
.
As Mat points out : The hosts file is for host name resolution only, so a combination of the two did the trick for me.
Example
Overview
example.app:80
| <--Link by Hosts File
+--> 127.65.43.21:80
| <--Link by netsh Utility
+--> localhost:8081
Actions
- Started my server on
localhost:8081
- Added my "local DNS" in the hosts file as a new line
127.65.43.21 example.app
- Any free address in the network
127.0.0.0/8
(127.x.x.x
) can be used. - Note: I am assuming
127.65.43.21:80
is not occupied by another service. - You can check with
netstat -a -n -p TCP | grep "LISTENING"
- Any free address in the network
- added the following network configuration with netsh command utility
netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
- I can now access the server at
http://example.app
*Notes:
- These commands/file modifications need to be executed with Admin rights*
- netsh portproxy needs ipv6 libraries even only to use v4tov4, typically they will also be included by default, otherwise install them using the following command: netsh interface ipv6 install
You can see the entry you have added with the command:
netsh interface portproxy show v4tov4
You can remove the entry with the following command:
netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21
###Links to Resources:###
Solution 2 - Windows
The hosts
file is for host name resolution only (on Windows as well as on Unix-like systems). You cannot put port numbers in there, and there is no way to do what you want with generic OS-level configuration - the browser is what selects the port to choose.
So use bookmarks or something like that.
(Some firewall/routing software might allow outbound port redirection, but that doesn't really sound like an appealing option for this.)
Solution 3 - Windows
What you want can be achieved by modifying the hosts file through Fiddler 2 application.
Follow these steps:
> 1. Install Fiddler2
> 2. Navigate to Fiddler2 menu:- Tools > HOSTS.. (Click to select)
> 3. Add a line like this:-
>
> localhost:8080 www.mydomainname.com
> 4. Save the file & then checkout www.mydomainname.com
in browser.
Solution 4 - Windows
Fiddler2 -> Rules -> Custom Rules
then find function OnBeforeRequest on put in the next script at the end:
if (oSession.HostnameIs("mysite.com")){
oSession.host="localhost:39901";
oSession.hostname="mysite.com";
}
Solution 5 - Windows
The simplest way is using Ergo as your reverse proxy: https://github.com/cristianoliveira/ergo
You set your services and its IP:PORT and ergo routes it for you :).
You can achieve the same using nginx
or apache
but you will need to configure them.
Solution 6 - Windows
This doesn't give the requested result exactly, however, for what I was doing, I was not fussed with adding the port into the URL within a browser.
I added the domain name to the hosts file
127.0.0.1 example.com
Ran my HTTP server from the domain name on port 8080
php -S example.com:8080
Then accessed the website through port 8080
http://example.com:8080
Just wanted to share in case anyone else is in a similar situation.
Solution 7 - Windows
Using netsh with connectaddress=127.0.0.1 did not work for me.
Despite looking everywhere on the internet I could not find the solution which solved this for me, which was to use connectaddress=127.x.x.x (i.e. any 127. ipv4 address, just not 127.0.0.1) as this appears to link back to localhost just the same but without the restriction, so that the loopback works in netsh.
Solution 8 - Windows
- Install Redirector
- Click Edit redirects -> Create New Redirect
Solution 9 - Windows
If what is happening is that you have another server running on localhost and you want to give this new server a different local hostname like
http://teamviewer/
I think that what you are actually looking for is Virtual Hosts functionality. I use Apache so I do not know how other web daemons support this. Maybe it is called Alias. Here is the Apache documentation:
Solution 10 - Windows
-You can use any free address in the network 127.0.0.0/8 , in my case needed this for python flask and this is what I have done : add this line in the hosts file (you can find it is windows under : C:\Windows\System32\drivers\etc ) :
127.0.0.5 flask.dev
-
Make sure the port is the default port "80" in my case this is what in the python flask:
app.run("127.0.0.5","80")
-
now run your code and browse
flask.dev
Solution 11 - Windows
You need NGNIX or Apache HTTP server as a proxy server for forwarding http requests to appropriate application -> which listens particular port (or do it with CNAME which provides Hosting company). It is most powerful solution and this is just a really easy way to keep adding new subdomains, or to add new domains automatically when DNS records are pointed at the server.
-
Apache era call it Virtual host -> httpd.apache.org/docs/trunk/vhosts/examples.html
-
NGINX -> Server Block https://www.nginx.com/resources/wiki/start/topics/examples/server_blocks/