Назад | Перейти на главную страницу

Не удается настроить два поддомена apache 2.4

Я пытаюсь настроить два поддомена с помощью apache 2.4, но мне кажется, что есть проблема, которую я не могу решить.

Вот файл конфигурации apache

 <VirtualHost *:80>
    ServerName www.subdomain1.myweb.com
    ServerAlias subdomain1.myweb.com
    DocumentRoot /srv/webapps/mywebapp
    <Directory /srv/webapps/mywebapp>
       AllowOverride all
       Options -MultiViews
       Require all granted
    </Directory>
 </VirtualHost>

 <VirtualHost *:80>
   ServerName www.subdomain2.myweb.com
   ServerAlias subdomain2.myweb.com
   DocumentRoot /srv/webapps/mywebapp2
   <Directory /srv/webapps/mywebapp2>
      AllowOverride all
      Options -MultiViews
      Require all granted
  </Directory>

Я попытался определить ServerName, но проблему не решил:

ServerName www.myweb.com

И попытался использовать IP-адрес сервера в VirtualHost, используя подстановочные знаки, используя домен в теге VirtualHost и т.д ... Все еще работало по желанию :(

Дело в том, что сервер apache subdomain1.myweb.com, но subdomain.myweb.com не надо. Единственный способ, которым я не могу обслуживать оба поддомена, это настройки последнего как:

 <VirtualHost *:80>
   ServerName www.myweb.com
   ServerAlias myweb.com
   DocumentRoot /srv/webapps/mywebapp2
   <Directory /srv/webapps/mywebapp2>
      AllowOverride all
      Options -MultiViews
      Require all granted
  </Directory>

Таким образом, я могу обслуживать один поддомен, а другой - в корневом пути, но это не желаемое поведение.

Я предполагаю, что каким-то образом apache соответствует запросу с первым subdmain, не знаю почему.

Apache показывает это как отображение виртуальных серверов:

 VirtualHost configuration:
 *:80                   is a NameVirtualHost
        default server www.myweb.com
        port 80 namevhost www.myweb.com
        alias subdomain1.myweb.com
        port 80 namevhost www.subdomain2.myweb.com
        alias subdomain2.com
 ServerRoot: "/etc/httpd"
 Main DocumentRoot: "/srv/http"
 Main ErrorLog: "/var/log/httpd/error_log"
 Mutex proxy: using_defaults
 Mutex default: dir="/run/httpd/" mechanism=default 
 Mutex mpm-accept: using_defaults
 Mutex proxy-balancer-shm: using_defaults
 PidFile: "/run/httpd/httpd.pid"  
 Define: DUMP_VHOSTS
 Define: DUMP_RUN_CFG

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

РЕДАКТИРОВАТЬ

httpd.conf в основном конфигурация по умолчанию, потому что у меня эта проблема возникла с первого момента, и я еще ничего не настраивал, кроме виртуальных хостов.

ServerRoot "/ etc / httpd"

Listen 80

<IfModule unixd_module>
User http
Group http
</IfModule>


<Directory />
    AllowOverride none
    Require all denied
</Directory>


DocumentRoot "/srv/http"
<Directory "/srv/http">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>


<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>


<Files ".ht*">
    Require all denied
</Files>

ErrorLog "/var/log/httpd/error_log"

LogLevel warn


<Directory "/srv/http/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf

# Multi-language error messages
Include conf/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
Include conf/extra/httpd-autoindex.conf

# Language settings
Include conf/extra/httpd-languages.conf

# User home directories
Include conf/extra/httpd-userdir.conf

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

# Various default settings
Include conf/extra/httpd-default.conf

#PHP
Include conf/extra/php5_module.conf

# Configure mod_proxy_html to understand HTML4/XHTML1
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

http-vhosts.conf совпадает с исходным вопросом

httpd-default.conf

#
# This configuration file reflects default settings for Apache HTTP Server.
#
# You may change these, but chances are that you may not need to.
#

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 60

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 5

#
# UseCanonicalName: Determines how Apache constructs self-referencing 
# URLs and the SERVER_NAME and SERVER_PORT variables.
# When set "Off", Apache will use the Hostname and Port supplied
# by the client.  When set "On", Apache will use the value of the
# ServerName directive.
#
UseCanonicalName Off

#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives.  See also the AllowOverride 
# directive.
#
AccessFileName .htaccess

#
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of:  Full | OS | Minor | Minimal | Major | Prod
# where Full conveys the most information, and Prod the least.
#
ServerTokens Full

#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory 
# listings, mod_status and mod_info output etc., but not CGI generated 
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of:  On | Off | EMail
#
ServerSignature Off

#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off

#
# Set a timeout for how long the client may take to send the request header
# and body.
# The default for the headers is header=20-40,MinRate=500, which means wait
# for the first byte of headers for 20 seconds. If some data arrives,
# increase the timeout corresponding to a data rate of 500 bytes/s, but not
# above 40 seconds.
# The default for the request body is body=20,MinRate=500, which is the same
# but has no upper limit for the timeout.
# To disable, set to header=0 body=0
#
<IfModule reqtimeout_module>
  RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
</IfModule>

Я пытался играть с http-default.conf изменение UseCanonicalName или Имя хоста чтобы дать им шанс, но пока ничего не работает ...

РЕШЕНИЕ

Наконец, похоже, что это была проблема конфигурации DNS, а не конфигурация виртуального хоста.

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

Спасибо вам всем!

Я заметил, что в вашем субдомене 2 вы не включили домен. Не уверен, что это только в конфиге здесь или в вашем. Выполняли ли вы перезагрузку службы httpd (или перезагрузку службы apache2 в зависимости от ОС). Ваш DNS указывает на ваш IP-адрес с использованием этих доменных имен?

TL; DR удалить www

www уже является поддоменом example.com.

так что вы, безусловно, можете определить домены 3-го или 4-го уровня из своего исходного домена. Но вы, скорее всего, не хотите, чтобы что-то .www.yourdomain.com было вашим субдоменом.

Вам, вероятно, понадобится subdomain.yourdomain.com, поэтому просто удалите wwww.

Еще не тестировал вашу конфигурацию, поэтому не знаю, как обстоят дела с остальными.