2

Я использую Debian и Apache.

Я хочу создать новую среду разработки на моем сервере разработки. Давайте назовем это dev2. В настоящее время на сервере dev размещается только dev. Мой производственный сервер размещает живой сайт, доступный через *.example.com . После выполнения приведенных ниже действий по настройке dev2.example.com со своим собственным docroot, URL-адрес dev2 перенаправляется на dev.example.com , сайт по умолчанию на сервере dev.

Вот шаги, которые я предпринял:

  • В нашей учетной записи хостинга у нас есть запись A для www чтобы перейти к IP- адресу рабочего сервера. Другая запись A для dev.example.com отправляется на сервер разработчика, и этот URL-адрес загружает веб-сайт разработчика по умолчанию. Я создал новую запись A для dev2 также указывающую на IP-адрес сервера dev.
  • Я отправил ping на dev2.example.com чтобы убедиться, что он работает и нет потери пакетов.
  • Я создал новый docroot и фиктивный индекс: /var/www/html/dev2/docroot/index.html
  • Затем я создал файл dev2.conf в /etc/apache2/sites-available и создал символическую ссылку на него из /etc/apache2/sites-enabled .
  • Затем я запустил команду sudo a2ensite dev2.conf и перезагрузил apache через service apache2 reload . Наконец, я очистил кеш браузера и когда это не сработало, я перезапустил apache2.

Что мне не хватает? Вот содержимое файла dev2.conf .

<VirtualHost xxx.xxx.xxx.xxx:80>
        ServerAdmin tech@example.com
        ServerSignature email
        ServerName dev2.example.com
        DirectoryIndex  index.php index.html index.htm index.shtml
        DocumentRoot /var/www/html/dev2/docroot
        HostNameLookups off
        RewriteEngine on

        # Force SSL
        RewriteCond %{HTTP_HOST} ^dev2\.example\.com$ [NC]
        RewriteRule ^(.*)$ https://dev2.example.com$1 [L,R=301]
        RewriteCond %{HTTPS} !=on
        RewriteRule ^(.*)$ https://dev2.example.com$1 [L,R=301]

        # Force our domain name
        RewriteCond %{HTTP_HOST}   !^dev2\.example\.com [NC]
        RewriteCond %{HTTP_HOST}   !^$
        RewriteRule ^/(.*)         https://dev2.example.com/$1 [L,R]

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

        <Directory /var/www/html/dev2/docroot>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Require all granted

                # For friendly URLs
                RewriteEngine on
                RewriteBase /
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Изменить: Я также попытался добавить строку ServerAlias dev2.example.com под ServerName безрезультатно.

1 ответ1

2

Основываясь на фактическом домене, о котором вы спрашиваете (теперь отредактирован, представлен на example.com), в ваших текущих конфигурациях есть небольшая путаница:

wget http:// dev.example.com
--2017-03-14 22: 20: 03-- http://dev.example.com/
Разрешение dev.example.com ... 206.123.xxx.182
Подключение к dev.example.com | 206.123.xxx.182 |: 80 ... подключено.
HTTP-запрос отправлен в ожидании ответа ... 301 перемещено навсегда
Расположение: http s:// dev2.example.com/ [следующий]

По какой-то причине простой http-сайт на dev перенаправляет на https-сайт для dev2 . Постоянные перенаправления (301 ответ) кэшируются большинством веб-браузеров, поэтому будьте осторожны при тестировании каждого изменения конфигурации, которое вы применяете. Либо тестируйте с помощью инструментов командной строки, либо используйте новое окно браузера для каждого теста ...

wget http:// dev2.example.com
URL преобразован в HTTPS из-за политики HSTS
--2017-03-14 22: 24: 45-- https://dev2.example.com/
Разрешение dev2.example.com ... 206.123.xxx.182 Подключение к dev2.example.com | 206.123.xxx.182 |: 443 ... подключено.
HTTP-запрос отправлен в ожидании ответа ... 302 найдено
Расположение: http s:// dev.example.com/ [следующий]

Сайт dev2 делает что-то отличное от dev ; применяется политика HSTS для перенаправления на HTTPS, а затем происходит перенаправление (в данном случае временное перенаправление 302) на dev .

В итоге: dev перенаправляет на dev2 а dev2 перенаправляет на dev .

Вам нужно проверить не только конфигурацию для dev2 но также конфигурацию для dev как на виртуальном хосте http http на порту 80, так и на конфигурации виртуального хоста SSL на порту 443.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .