Виртуальные хосты Apache не работают должным образом - мой веб-сайт перенаправлен на виртуальный хост по умолчанию - PullRequest
0 голосов
/ 19 декабря 2018

Я настраиваю новый сервер (дроплет) с Ubuntu 18.04.1 LTS.Я установил apache и настроил виртуальные хосты.Имя сервера www.speedysoftware.com, и это значение /etc/hostname.Проблема в том, что я пытаюсь перенаправить http://www.speedysoftware.com/ на конкретный виртуальный хост, но он перенаправлен на виртуальный хост по умолчанию.С другой стороны, http://www.speedysoft.com/ и http://www.speedy -software.com / перенаправляются на правильный виртуальный хост, который должен совпадать с файлом http://www.speedysoftware.com/

/etc/apache2/sites-available/000-default.conf:

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    ServerAdmin webmaster@speedy.net
    DocumentRoot /var/www/general

    <Directory /var/www/general>
        Options +FollowSymLinks
        Options -Indexes
        AllowOverride All
        Require all granted
    </Directory>

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Файл /etc/apache2/sites-available/speedysoftware.conf:

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    ServerName www.speedysoftware.com
    ServerAlias speedysoftware.com *.speedysoftware.com
    ServerAlias speedy-software.com *.speedy-software.com
    ServerAlias speedysoft.com *.speedysoft.com
    # ... (more ServerAliases)

    ServerAdmin webmaster@speedy.net
    DocumentRoot /var/www/speedysoftware

    <Directory /var/www/speedysoftware>
        Options +FollowSymLinks
        Options -Indexes
        AllowOverride All
        Require all granted
    </Directory>

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Вы можете видеть, что http://www.speedy -soft.com / перенаправлен по умолчаниювиртуальный хост, и это правильно.В чем проблема с конфигурацией?

После внесения изменений я перезагружал настройки с помощью sudo systemctl restart apache2.

Что касается перенаправления, в этом случае я не хочу перенаправлять.Я хочу, чтобы их считали отдельными сайтами, хотя они ведут к одному и тому же виртуальному хосту.В других случаях я перенаправляю, например, перенаправляю http://www.speedypedia.org/ на http://www.speedypedia.info/, и перенаправляю http://ww.speedysoftware.com/ (или любой другой поддомен, включая http://speedysoftware.com/) на http://www.speedysoftware.com/.

Обновление - я проверил и http://ww.speedysoftware.com/, http://wwww.speedysoftware.com/ и http://speedysoftware.com/ все ведут к правильному виртуальному хосту. Только http://www.speedysoftware.com/ не приводит к правильному виртуальному хосту.

1 Ответ

0 голосов
/ 22 декабря 2018

Я нашел решение!Я написал в службу поддержки DigitalOcean (у них, кстати, есть отличная поддержка), и они написали мне:

"Сервер Apache, поэтому у вас есть доступ к команде apachectl, которая поддерживает флаг -S, чтобы получитьпроанализировал сброшенные настройки, которые включают vhosts и конфиги, где они установлены. "

Я запустил apachectl -S из командной строки и обнаружил проблему:

*:80                   is a NameVirtualHost
         default server www.speedysoftware.com (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost www.speedysoftware.com (/etc/apache2/sites-enabled/000-default.conf:1)
         ...

Так как я не сделалопределить ServerName в /etc/apache2/sites-available/000-default.conf, имя капли было взято, и это было проблемой.Поэтому я добавил ServerName www.speedy-soft.com в этот файл:

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    ServerName www.speedy-soft.com

    ServerAdmin webmaster@speedy.net
    DocumentRoot /var/www/general

    <Directory /var/www/general>
        Options +FollowSymLinks
        Options -Indexes
        AllowOverride All
        Require all granted
    </Directory>

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

и перезапустил Apache.Я снова запустил apachectl -S:

*:80                   is a NameVirtualHost
         default server www.speedy-soft.com (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost www.speedy-soft.com (/etc/apache2/sites-enabled/000-default.conf:1)
         ...

И теперь все работает.Спасибо!

Более подробную информацию вы можете увидеть на этой странице: Как отладить конфигурацию виртуального хоста apache?

...