Redirect port 80 to 8080 and make it work on local machine
I redirected traffic for port 80 to 8080 on my machine with
sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080
It works fine for all the world except my own machine. I am a developer and I need to redirect port 80 to 8080 for myself.
My IP is 192.168.0.111
My web server runs on port 8080
I wish to open website from http://192.168.0.111/
instead of http://192.168.0.111:8080/
from same machine where server runs.
iptables port-forwarding
add a comment |
I redirected traffic for port 80 to 8080 on my machine with
sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080
It works fine for all the world except my own machine. I am a developer and I need to redirect port 80 to 8080 for myself.
My IP is 192.168.0.111
My web server runs on port 8080
I wish to open website from http://192.168.0.111/
instead of http://192.168.0.111:8080/
from same machine where server runs.
iptables port-forwarding
Excuse me for the abberation, but what is the purpose of forwarding port 80 to 8080?
– ma11hew28
Nov 10 '14 at 5:10
1
@mattdipasquale, normal users can't access port 80 so you couldn't run a web service like python flask as a normal user.
– Christian
Mar 29 '16 at 10:14
Why don't you just bind the web server to port 80?
– David Foerster
May 23 '16 at 13:01
3
i'd guess its because non-root user cannot bind to ports 80/443 and he doesnt want to run his web service as root..
– Pavel K.
Oct 11 '16 at 10:35
add a comment |
I redirected traffic for port 80 to 8080 on my machine with
sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080
It works fine for all the world except my own machine. I am a developer and I need to redirect port 80 to 8080 for myself.
My IP is 192.168.0.111
My web server runs on port 8080
I wish to open website from http://192.168.0.111/
instead of http://192.168.0.111:8080/
from same machine where server runs.
iptables port-forwarding
I redirected traffic for port 80 to 8080 on my machine with
sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080
It works fine for all the world except my own machine. I am a developer and I need to redirect port 80 to 8080 for myself.
My IP is 192.168.0.111
My web server runs on port 8080
I wish to open website from http://192.168.0.111/
instead of http://192.168.0.111:8080/
from same machine where server runs.
iptables port-forwarding
iptables port-forwarding
edited Mar 29 '18 at 9:44
heemayl
66.9k8141214
66.9k8141214
asked Apr 7 '14 at 23:40
MaxMax
448157
448157
Excuse me for the abberation, but what is the purpose of forwarding port 80 to 8080?
– ma11hew28
Nov 10 '14 at 5:10
1
@mattdipasquale, normal users can't access port 80 so you couldn't run a web service like python flask as a normal user.
– Christian
Mar 29 '16 at 10:14
Why don't you just bind the web server to port 80?
– David Foerster
May 23 '16 at 13:01
3
i'd guess its because non-root user cannot bind to ports 80/443 and he doesnt want to run his web service as root..
– Pavel K.
Oct 11 '16 at 10:35
add a comment |
Excuse me for the abberation, but what is the purpose of forwarding port 80 to 8080?
– ma11hew28
Nov 10 '14 at 5:10
1
@mattdipasquale, normal users can't access port 80 so you couldn't run a web service like python flask as a normal user.
– Christian
Mar 29 '16 at 10:14
Why don't you just bind the web server to port 80?
– David Foerster
May 23 '16 at 13:01
3
i'd guess its because non-root user cannot bind to ports 80/443 and he doesnt want to run his web service as root..
– Pavel K.
Oct 11 '16 at 10:35
Excuse me for the abberation, but what is the purpose of forwarding port 80 to 8080?
– ma11hew28
Nov 10 '14 at 5:10
Excuse me for the abberation, but what is the purpose of forwarding port 80 to 8080?
– ma11hew28
Nov 10 '14 at 5:10
1
1
@mattdipasquale, normal users can't access port 80 so you couldn't run a web service like python flask as a normal user.
– Christian
Mar 29 '16 at 10:14
@mattdipasquale, normal users can't access port 80 so you couldn't run a web service like python flask as a normal user.
– Christian
Mar 29 '16 at 10:14
Why don't you just bind the web server to port 80?
– David Foerster
May 23 '16 at 13:01
Why don't you just bind the web server to port 80?
– David Foerster
May 23 '16 at 13:01
3
3
i'd guess its because non-root user cannot bind to ports 80/443 and he doesnt want to run his web service as root..
– Pavel K.
Oct 11 '16 at 10:35
i'd guess its because non-root user cannot bind to ports 80/443 and he doesnt want to run his web service as root..
– Pavel K.
Oct 11 '16 at 10:35
add a comment |
3 Answers
3
active
oldest
votes
You need to use the OUTPUT
chain as the packets meant for the loopback interface do not pass via the PREROUTING
chain. The following should work; run as root
:
iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080
1
Does port 80 required to be gloabally accesible? I tried your solution, my port number 8080 is accessible but 80 is not hence it did not worked. @heemayl
– alper
Jul 28 '17 at 23:39
2
This did not work, not sure why this is voted up
– Diyoda_
Mar 5 '18 at 22:11
@Diyoda_ Please define did not work.
– heemayl
Mar 29 '18 at 9:44
@Alper I think you didn't read the OPs question.
– styl3r
Apr 23 '18 at 22:19
I can confirm that this doesn't work on ubuntu 18.04
– Ahmed Hamdy
Jun 24 '18 at 11:23
|
show 1 more comment
Instead of the iptables
, You could try:
sudo ssh -gL 80:127.0.0.1:8080 localhost
2
That is an option but it is not exactly what I want because I already have web server on port 80. I will prefer to do it with iptables and keep web server on port 80 running. I guess I just have to apply rule to different step instead ofPREROUTING
– Max
Apr 8 '14 at 10:45
Yes - this will cause a port conflict if you have something listening that you are port forwarding to as Max suggested. The above answer is the more general case.
– cgseller
Nov 15 '16 at 20:24
add a comment |
Simple just use iptables allowing both port 80 and 8080 then redirect 80 to 8080 make sure you are assigning to the correct nic.. in example I use eth0
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
New contributor
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "89"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f444729%2fredirect-port-80-to-8080-and-make-it-work-on-local-machine%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
You need to use the OUTPUT
chain as the packets meant for the loopback interface do not pass via the PREROUTING
chain. The following should work; run as root
:
iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080
1
Does port 80 required to be gloabally accesible? I tried your solution, my port number 8080 is accessible but 80 is not hence it did not worked. @heemayl
– alper
Jul 28 '17 at 23:39
2
This did not work, not sure why this is voted up
– Diyoda_
Mar 5 '18 at 22:11
@Diyoda_ Please define did not work.
– heemayl
Mar 29 '18 at 9:44
@Alper I think you didn't read the OPs question.
– styl3r
Apr 23 '18 at 22:19
I can confirm that this doesn't work on ubuntu 18.04
– Ahmed Hamdy
Jun 24 '18 at 11:23
|
show 1 more comment
You need to use the OUTPUT
chain as the packets meant for the loopback interface do not pass via the PREROUTING
chain. The following should work; run as root
:
iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080
1
Does port 80 required to be gloabally accesible? I tried your solution, my port number 8080 is accessible but 80 is not hence it did not worked. @heemayl
– alper
Jul 28 '17 at 23:39
2
This did not work, not sure why this is voted up
– Diyoda_
Mar 5 '18 at 22:11
@Diyoda_ Please define did not work.
– heemayl
Mar 29 '18 at 9:44
@Alper I think you didn't read the OPs question.
– styl3r
Apr 23 '18 at 22:19
I can confirm that this doesn't work on ubuntu 18.04
– Ahmed Hamdy
Jun 24 '18 at 11:23
|
show 1 more comment
You need to use the OUTPUT
chain as the packets meant for the loopback interface do not pass via the PREROUTING
chain. The following should work; run as root
:
iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080
You need to use the OUTPUT
chain as the packets meant for the loopback interface do not pass via the PREROUTING
chain. The following should work; run as root
:
iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080
edited Jun 24 '18 at 11:50
answered Jan 30 '15 at 5:15
heemaylheemayl
66.9k8141214
66.9k8141214
1
Does port 80 required to be gloabally accesible? I tried your solution, my port number 8080 is accessible but 80 is not hence it did not worked. @heemayl
– alper
Jul 28 '17 at 23:39
2
This did not work, not sure why this is voted up
– Diyoda_
Mar 5 '18 at 22:11
@Diyoda_ Please define did not work.
– heemayl
Mar 29 '18 at 9:44
@Alper I think you didn't read the OPs question.
– styl3r
Apr 23 '18 at 22:19
I can confirm that this doesn't work on ubuntu 18.04
– Ahmed Hamdy
Jun 24 '18 at 11:23
|
show 1 more comment
1
Does port 80 required to be gloabally accesible? I tried your solution, my port number 8080 is accessible but 80 is not hence it did not worked. @heemayl
– alper
Jul 28 '17 at 23:39
2
This did not work, not sure why this is voted up
– Diyoda_
Mar 5 '18 at 22:11
@Diyoda_ Please define did not work.
– heemayl
Mar 29 '18 at 9:44
@Alper I think you didn't read the OPs question.
– styl3r
Apr 23 '18 at 22:19
I can confirm that this doesn't work on ubuntu 18.04
– Ahmed Hamdy
Jun 24 '18 at 11:23
1
1
Does port 80 required to be gloabally accesible? I tried your solution, my port number 8080 is accessible but 80 is not hence it did not worked. @heemayl
– alper
Jul 28 '17 at 23:39
Does port 80 required to be gloabally accesible? I tried your solution, my port number 8080 is accessible but 80 is not hence it did not worked. @heemayl
– alper
Jul 28 '17 at 23:39
2
2
This did not work, not sure why this is voted up
– Diyoda_
Mar 5 '18 at 22:11
This did not work, not sure why this is voted up
– Diyoda_
Mar 5 '18 at 22:11
@Diyoda_ Please define did not work.
– heemayl
Mar 29 '18 at 9:44
@Diyoda_ Please define did not work.
– heemayl
Mar 29 '18 at 9:44
@Alper I think you didn't read the OPs question.
– styl3r
Apr 23 '18 at 22:19
@Alper I think you didn't read the OPs question.
– styl3r
Apr 23 '18 at 22:19
I can confirm that this doesn't work on ubuntu 18.04
– Ahmed Hamdy
Jun 24 '18 at 11:23
I can confirm that this doesn't work on ubuntu 18.04
– Ahmed Hamdy
Jun 24 '18 at 11:23
|
show 1 more comment
Instead of the iptables
, You could try:
sudo ssh -gL 80:127.0.0.1:8080 localhost
2
That is an option but it is not exactly what I want because I already have web server on port 80. I will prefer to do it with iptables and keep web server on port 80 running. I guess I just have to apply rule to different step instead ofPREROUTING
– Max
Apr 8 '14 at 10:45
Yes - this will cause a port conflict if you have something listening that you are port forwarding to as Max suggested. The above answer is the more general case.
– cgseller
Nov 15 '16 at 20:24
add a comment |
Instead of the iptables
, You could try:
sudo ssh -gL 80:127.0.0.1:8080 localhost
2
That is an option but it is not exactly what I want because I already have web server on port 80. I will prefer to do it with iptables and keep web server on port 80 running. I guess I just have to apply rule to different step instead ofPREROUTING
– Max
Apr 8 '14 at 10:45
Yes - this will cause a port conflict if you have something listening that you are port forwarding to as Max suggested. The above answer is the more general case.
– cgseller
Nov 15 '16 at 20:24
add a comment |
Instead of the iptables
, You could try:
sudo ssh -gL 80:127.0.0.1:8080 localhost
Instead of the iptables
, You could try:
sudo ssh -gL 80:127.0.0.1:8080 localhost
answered Apr 8 '14 at 0:06
GregorGregor
28416
28416
2
That is an option but it is not exactly what I want because I already have web server on port 80. I will prefer to do it with iptables and keep web server on port 80 running. I guess I just have to apply rule to different step instead ofPREROUTING
– Max
Apr 8 '14 at 10:45
Yes - this will cause a port conflict if you have something listening that you are port forwarding to as Max suggested. The above answer is the more general case.
– cgseller
Nov 15 '16 at 20:24
add a comment |
2
That is an option but it is not exactly what I want because I already have web server on port 80. I will prefer to do it with iptables and keep web server on port 80 running. I guess I just have to apply rule to different step instead ofPREROUTING
– Max
Apr 8 '14 at 10:45
Yes - this will cause a port conflict if you have something listening that you are port forwarding to as Max suggested. The above answer is the more general case.
– cgseller
Nov 15 '16 at 20:24
2
2
That is an option but it is not exactly what I want because I already have web server on port 80. I will prefer to do it with iptables and keep web server on port 80 running. I guess I just have to apply rule to different step instead of
PREROUTING
– Max
Apr 8 '14 at 10:45
That is an option but it is not exactly what I want because I already have web server on port 80. I will prefer to do it with iptables and keep web server on port 80 running. I guess I just have to apply rule to different step instead of
PREROUTING
– Max
Apr 8 '14 at 10:45
Yes - this will cause a port conflict if you have something listening that you are port forwarding to as Max suggested. The above answer is the more general case.
– cgseller
Nov 15 '16 at 20:24
Yes - this will cause a port conflict if you have something listening that you are port forwarding to as Max suggested. The above answer is the more general case.
– cgseller
Nov 15 '16 at 20:24
add a comment |
Simple just use iptables allowing both port 80 and 8080 then redirect 80 to 8080 make sure you are assigning to the correct nic.. in example I use eth0
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
New contributor
add a comment |
Simple just use iptables allowing both port 80 and 8080 then redirect 80 to 8080 make sure you are assigning to the correct nic.. in example I use eth0
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
New contributor
add a comment |
Simple just use iptables allowing both port 80 and 8080 then redirect 80 to 8080 make sure you are assigning to the correct nic.. in example I use eth0
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
New contributor
Simple just use iptables allowing both port 80 and 8080 then redirect 80 to 8080 make sure you are assigning to the correct nic.. in example I use eth0
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
New contributor
edited 1 hour ago
Kevin Bowen
14.5k155970
14.5k155970
New contributor
answered 2 hours ago
tmactmac
1
1
New contributor
New contributor
add a comment |
add a comment |
Thanks for contributing an answer to Ask Ubuntu!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f444729%2fredirect-port-80-to-8080-and-make-it-work-on-local-machine%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Excuse me for the abberation, but what is the purpose of forwarding port 80 to 8080?
– ma11hew28
Nov 10 '14 at 5:10
1
@mattdipasquale, normal users can't access port 80 so you couldn't run a web service like python flask as a normal user.
– Christian
Mar 29 '16 at 10:14
Why don't you just bind the web server to port 80?
– David Foerster
May 23 '16 at 13:01
3
i'd guess its because non-root user cannot bind to ports 80/443 and he doesnt want to run his web service as root..
– Pavel K.
Oct 11 '16 at 10:35