2015-01-25 4 views
0

Итак, я попробовал форматировать https по всему сайту, поставив перенаправление в virtualhost, и теперь apache не запустится. Вот файл VirtualHost:Apache не запускается после смены виртуального хоста

Listen 80 443 

<VirtualHost *:80> 
    Redirect permanent/https://www.tedspikes.com/ 
</VirtualHost> 

<VirtualHost *:443> 
    DocumentRoot /var/www/html 
    ServerName tedspikes.com 
    ServerAlias www.tedspikes.com 
    SSLEngine On 
    <Directory /> 
     Require all granted 
     Options Indexes FollowSymLinks Includes ExecCGI 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 
    ErrorLog /var/log/apache2/error.log 
    CustomLog /var/log/apache2/access.log combined 
</VirtualHost> 

Когда я начинаю апача, он бросает это:

(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80 

который я взял, как «кто-то слушает мой порт 80». Вот парадокс:

[email protected]:~$ sudo netstat -nlp 
Active Internet connections (only servers) 
Proto Recv-Q Send-Q Local Address   Foreign Address   State  PID/Program name 
tcp  0  0 0.0.0.0:22    0.0.0.0:*    LISTEN  889/sshd 
tcp  0  0 0.0.0.0:1723   0.0.0.0:*    LISTEN  903/pptpd 
tcp  0  0 127.0.0.1:3306   0.0.0.0:*    LISTEN  987/mysqld 
tcp6  0  0 :::22     :::*     LISTEN  889/sshd 
udp  0  0 188.166.36.165:123  0.0.0.0:*       1367/ntpd 
udp  0  0 127.0.0.1:123   0.0.0.0:*       1367/ntpd 
udp  0  0 0.0.0.0:123    0.0.0.0:*       1367/ntpd 
udp6  0  0 fe80::601:37ff:fefd:123 :::*        1367/ntpd 
udp6  0  0 ::1:123     :::*        1367/ntpd 
udp6  0  0 :::123     :::*        1367/ntpd 
Active UNIX domain sockets (only servers) 
Proto RefCnt Flags  Type  State   I-Node PID/Program name Path 
unix 2  [ ACC ]  STREAM  LISTENING  9254  895/acpid   /var/run/acpid.socket 
unix 2  [ ACC ]  STREAM  LISTENING  9515  987/mysqld   /var/run/mysqld/mysqld.sock 
unix 2  [ ACC ]  STREAM  LISTENING  7004  1/init    @/com/ubuntu/upstart 
unix 2  [ ACC ]  STREAM  LISTENING  8919  691/dbus-daemon  /var/run/dbus/system_bus_socket 
unix 2  [ ACC ]  SEQPACKET LISTENING  7651  324/systemd-udevd /run/udev/control 

Так, апач не запускается, потому что кто-то коробления порт 80, но там нет никого на этом порту! Что происходит? Я что-то сломал в virtualhost?

ответ

1

Ошибка Listen Директива. Вы не можете отметить более одного интерфейса/порта с одной Listen директивы, и поэтому вы должны использовать несколько из них, как,

Listen 80 
Listen 8080 

Кроме того, что другие правила выглядят прекрасно. Что касается перенаправления https, вы можете использовать правило ниже, которое является более общим и избавит вас от неожиданных проблем.

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

Кроме этого, не знаю, почему вы получаете Address already in use ошибку.

+0

Исправлена ​​директива listen, теперь она выдает две ошибки, как для портов 80, так и для 443. Что касается modrewrite, документация apache говорит, что это плохой способ перенаправления ssl и рекомендует перенаправление через virtualhost. – TedSpikes

Смежные вопросы