Apache: конфигурация виртуального хоста - PullRequest
2 голосов
/ 03 ноября 2010

Как я пытался настроить мой виртуальный хост в Apache. Я положил что-то вроде этого,

NameVirtualHost *:80

<VirtualHost *:80>
   DocumentRoot /xampp/htdocs/gift
   ServerName gift.loc  
</VirtualHost>

И в моем файле hosts я поместил что-то вроде этого,

127.0.0.1       localhost
127.0.0.1       gift.loc

И я запускаю его в браузере,

http://gift.loc - is fine

Но когда я попытался использовать это,

http://localhost/othersite - can't found

Я что-то пропустил, чтобы настроить? ЛЮБЫЕ идеи ...

Заранее спасибо,

Ответы [ 4 ]

4 голосов
/ 03 ноября 2010

Вам нужна запись VirtualHost для каждого хоста, который вы хотите, чтобы apache обрабатывал. Первый файл в файле конфигурации будет использоваться по умолчанию, если другие VirtualHosts не соответствуют запросу.

Например, если у нас есть:

<VirtualHost *:80>
   DocumentRoot /xampp/htdocs/gift
   ServerName gift.loc  
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot /example/htdocs/gift
   ServerName example.com  
</VirtualHost>

Запрос на foobar.org будет обрабатываться виртуальным хостом gift.loc.

2 голосов
/ 02 марта 2018

Для настройки виртуального хоста в ubuntu необходимо выполнить несколько шагов: Допустим, имя папки вашего проекта myProject

Шаг 1. Поместите папку в / var / www / html

sudo mv ~/myProject /var/www/html/

Шаг 2: передать права собственности на папку проекта www-data

sudo chown -R www-data:www-data /var/www/html/myProject

Шаг 3: Создайте новый сайт внутри доступных сайтов:

cd /etc/apache2/sites-available/ 
ls

Здесь вы увидите существующие 000-default.conf и default-ssl.conf. Скопируйте содержимое обоих файлов в один файл и замените имя папки или скопируйте этот файл в новый файл с именем myProject.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.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/myProject/
        ServerName project.com
        ServerAlias www.project.com

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

</VirtualHost>

<VirtualHost *:443>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/html/myProject/
        ServerName project.com
        ServerAlias www.project.com          

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

        SSLCertificateFile  /etc/ssl/certs/mobidev_cert.pem
        SSLCertificateKeyFile /etc/ssl/certs/mobidev_key.pem


        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

</VirtualHost>

Включите также путь самозаверяющего сертификата, как показано, ssl-ключ и ssl-сертификат, которые можно легко загрузить.

Шаг 4: Добавьте ваш проект в файл конфигурации apache.

sudo vi /etc/apache2/apache2.conf

поместить эти строки в файл:

DocumentRoot "/var/www/html/myProject"
<Directory /var/www/html/myProject/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Шаг 5: Добавьте имя вашего виртуального сервера (указанное в myProject.conf) в файл хоста. Добавьте следующую строку:

sudo gedit /etc/hosts
127.0.1.1   project.com

Шаг 6: Теперь все готово, включить сайт, перезапустить apache

sudo a2ensite /etc/apache2/sites-availabl/myProject.conf
sudo systemctl reload apache2
sudo update-rc.d apache2 defaults
sudo update-rc.d mysql defaults
sudo a2enmod ssl
sudo a2ensite default-ssl

Просто нажмите project.com в своем браузере.

2 голосов
/ 25 октября 2012

вам нужно поместить localhost в vhosts.conf

    NameVirtualHost *:80

    <VirtualHost *:80>
       DocumentRoot /xampp/htdocs/
       ServerName localhost
    </VirtualHost>

    <VirtualHost *:80>
       DocumentRoot /xampp/htdocs/gift
       ServerName gift.loc  
    </VirtualHost>

Это прекрасно работает (убедитесь, что вы перезапускаете apache).Если вам нужно проверить свою конфигурацию, вы можете (по крайней мере, в Linux) запустить httpd -S.

0 голосов
/ 03 ноября 2010

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

Далее в том же документе, Если вы добавляете виртуальные хосты на существующий веб-сервер, вы также должны создать блок для существующего хоста.

...