Changing port 80 to 8080 in Apache

Posted on

Changing port 80 to 8080 in Apache – Managing your servers can streamline the performance of your team by allowing them to complete complex tasks faster. Plus, it can enable them to detect problems early on before they get out of hand and compromise your business. As a result, the risk of experiencing operational setbacks is drastically lower.

But the only way to make the most of your server management is to perform it correctly. And to help you do so, this article will share nine tips on improving your server management and fix some problem about apache-2.2, virtualhost, port, namevirtualhost, .

I’m trying to change the port used by a website from 80 to 8080.

Here is my /etc/apache2/ports.conf:

NameVirtualHost *:80
NameVirtualHost *:8080
Listen 80
Listen 8080

Here is my VirtualHost file:

<VirtualHost *:8080>
  # Admin email, Server Name (domain name), and any aliases

  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html index.php
  DocumentRoot /var/www/

netstat -lntp output:

tcp6       0      0 :::8080       :::*              LISTEN      7267/apache2    
tcp6       0      0 :::80         :::*              LISTEN      7267/apache2

When I restart apache using the port 8080 in my VirtualHost, the website goes down (could not connect to website error in chrome), if I change back to port 80, all works correctly again.

What am I doing wrong here?


The host it’s a linode machine with Debian 7.

Also I do not have SElinux enabled.

The /etc/hosts config:   <> <serverhostname>   debian

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

I think the port 8080 it’s correctly open, here is the output of iptables -L -n -v:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  467 36136 ACCEPT     all  --  lo     *             
    0     0 REJECT     all  --  *      *            reject-with icmp-port-unreachable
 103K   11M ACCEPT     all  --  *      *              state RELATED,ESTABLISHED
  600 35296 ACCEPT     tcp  --  *      *              tcp dpt:80
   30  1532 ACCEPT     tcp  --  *      *              tcp dpt:443
   42  2308 ACCEPT     tcp  --  *      *              tcp dpt:8080
 6860  411K ACCEPT     tcp  --  *      *              state NEW tcp dpt:22
   44  2848 ACCEPT     icmp --  *      *             
  860 57824 LOG        all  --  *      *              limit: avg 5/min burst 5 LOG flags 0 level 7 prefix "iptables denied: "
  968 67687 DROP       all  --  *      *             

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      *             

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

curl -v http://localhost:8080 output:

* About to connect() to localhost port 8080 (#0)
*   Trying ::1...
* connected
* Connected to localhost (::1) port 8080 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.26.0
> Host: localhost:8080
> Accept: */*
* additional stuff not fine transfer.c:1037: 0 0
* HTTP 1.1 or later with persistent connection, pipelining supported
< HTTP/1.1 301 Moved Permanently
< Date: Mon, 10 Jun 2013 09:58:08 GMT
< Server: Apache/2.2.22 (Debian)
< X-Powered-By: PHP/5.4.4-14
< X-Pingback:
< Location: http://localhost/
< Vary: Accept-Encoding
< Content-Length: 0
< Content-Type: text/html; charset=UTF-8
* Connection #0 to host localhost left intact
* Closing connection #0

Solution :

Maybe Port 8080 is blocked by iptables. Use iptables -L -n -v to see if iptables is enabled and effectively blocking packets to port 8080.

what distro are you running?
You may have SElinux enabled, which is denying your requests.

Check if SElinux is enbaled

# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

If the current mode is enforcing try to disable it during troubleshooting:

#setenforce 0

If it’s working now you have to create a custom SElinux policy via audit2allow.

From your netstat output it looks like port 8080 is listening on ipv6.
Are you using ipv6 to connect?

Is httpd listening on ipv4?

Can you run netstat -lntp|grep 80 and show us all of the output instead of just pasting in the bit you think is relevant.

I suggest following workaround,

  • check apache configuration

    apachectl configtest

  • test the page from the server itself and check HTTP output

    wget -O – “localhost”

  • check apache error_log to what kind of error are you getting, probably a configuration on your website is not allowing port 8080

  • try use only port 8080 to see what happens

    NameVirtualHost *:8080
    Listen 8080

  • create only a VirtualHost listening on port 8080

Leave a Reply

Your email address will not be published. Required fields are marked *