Can you help me please. I need run Apache2 on my Debian 7 server. But it run only on tcpv6 port, not on tcpv4 port. I installed it with apt-get install. I read some tips for this problem, but it does not help me. And if I go to localhost or 127.0.0.1 or my server IPv4 address it does not display any website.

My /etc/apache2/ports.conf:

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
 # If you add NameVirtualHost *:443 here, you will also have to change
 # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
 # to <VirtualHost *:443>
 # Server Name Indication for SSL named virtual hosts is currently not
 # supported by MSIE on Windows XP.
 Listen 443
</IfModule>

<IfModule mod_gnutls.c>
 Listen 443
</IfModule>

netstat -plntu:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3558/sshd       
tcp        0      0 0.0.0.0:3466            0.0.0.0:*               LISTEN      2820/mysqld     
tcp6       0      0 :::80                   :::*                    LISTEN      2097/apache2    
tcp6       0      0 :::22                   :::*                    LISTEN      3558/sshd       
  • 3
    Try changing the Listen 80 to Listen 0.0.0.0:80. You can refer to the documentation httpd.apache.org/docs/2.2/bind.html for more information. – pradeepchhetri Dec 24 '13 at 14:58
  • @pradeepchhetri Thank you. It works. I can access to my server address from any computer and it show content (IP address/some.php), but I don´t access to some.php from this server. I have tried localhost, 127.0.0.1 and external IP:port number that works from other PC... But it does not work. – Mato Dec 25 '13 at 14:12
  • Can you post the output of sudo iptables -nvL and sudo sestatus ? I think you have some local firewall which is preventing. – pradeepchhetri Dec 25 '13 at 17:25
  • @Mato you need to clarify, when it shows content but not working, do you mean that it's showing your the raw PHP instead of running it? If so, you need to enable the PHP module. I think a2enmod php5 should do it for you. – robbat2 Dec 26 '13 at 17:05
  • 2
    Linux machines typically hide a dualstack IPv4+IPv6 socket behind listening on IPv6 address ::. – Pavel Šimerda Jul 12 '14 at 20:55
up vote 23 down vote accepted

The fact that netstat shows only tcp6 here is not the problem. If you don't specify an address to listen on, apache will listen on all supported address families using a single socket (for design reasons, sshd uses a unique socket per address & address family, hence showing up twice in your netstat output).

Here's one of my systems, showing apache having only tcp6 sockets, and yet still working fine via both IPv4 and IPv6.

woodpecker ~ # netstat -anp |grep apache
tcp6       0      0 :::80    :::*       LISTEN      1637/apache2        
tcp6       0      0 :::443   :::*       LISTEN      1637/apache2        
woodpecker ~ # wget http://127.0.0.1/ -O /dev/null
--2013-12-25 08:52:38--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45 [text/html]
...
# wget http://[::1]/ -O /dev/null
--2013-12-25 08:53:00--  http://[::1]/
Connecting to [::1]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45 [text/html]
...

If you run wget http://127.0.0.1/ -O - on the server what happens? Does it successfully connect? Does it return the raw HTML for your website as expected?

  • thanks, now it works, but I have only one small problem yet. I have wrote about it above. – Mato Dec 25 '13 at 14:14

This will handle IPV4 connections only:

Listen 0.0.0.0:80
Listen 192.0.2.1:80 

https://httpd.apache.org/docs/2.2/bind.html#ipv6

*

wget http://127.0.0.1/ -O /dev/null

* represents connection to local server without handling IPv4 or IPv6, if you change localhost (or 127.0.0.1) to real IPv4 IP address of this server, you cant wget anything because denied connection.

Try to describe you IP in config files: NameVirtualHost :80 Listen :80

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.