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

Конфигурация нескольких сайтов с помощью apache mod_proxy

У меня есть один большой сервер (временный, и некоторые веб-сайты в какой-то момент будут перемещены на несколько других), на котором я установил все инструменты, необходимые для моего проекта (Jira, Bamboo и т. Д.), И теперь мне нужно добавить один «обычный» веб-сайт. к смеси, которая вместо всех других уже настроенных веб-сайтов действительно не нуждается в проксировании через apache и может обслуживаться напрямую.

Итак, чтобы было немного понятнее, у меня есть Jira, bamboo и некоторые другие приложения, работающие на их автономном Tomcat, для которого apache проксирует запросы, и я хочу добавить обычный веб-сайт в эту конфигурацию, но когда я добавляю свою конфигурацию vhost, все сайты падают.

Вот мои файлы конфигурации:

apache2.conf:

Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

HostnameLookups Off

ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn

IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

Include ports.conf

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

AccessFileName .htaccess

<FilesMatch "^\.ht">
    Require all denied
</FilesMatch>

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

IncludeOptional conf-enabled/*.conf

IncludeOptional sites-enabled/*.conf

Пример файла конфигурации для приложения за автономным Tomcat (их 4):

<VirtualHost *>
    ServerName jira.example.com

    # Put this in the main section of your configuration (or desired virtual host, if using Apache virtual hosts)
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://example.com:8080/
    ProxyPassReverse / http://example.com:8080/

    <Location />
        Order allow,deny
        Allow from all
    </Location>

    LogLevel info

    ErrorLog ${APACHE_LOG_DIR}/jira_error.log
    CustomLog ${APACHE_LOG_DIR}/jira_access.log combined

</VirtualHost>

Файл конфигурации для нового vHost (в стадии разработки):

<VirtualHost *:80>
    ServerAdmin myemail@example.com
    ServerName testing.example.com
    DocumentRoot /var/atlassian/application-data/bamboo/xml-data/build-dir/DFWA-DFWAAT2-DEV

    CustomLog /var/log/apache2/testing/access.log combined
    ErrorLog /var/log/apache2/testing/error.log

    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://testing.exemple.com/
    ProxyPassReverse / http://testing.exemple.com/

    <Location />
        Order allow,deny
        Allow from all
        require all granted
    </Location>
</VirtualHost>

У меня также есть файл конфигурации для phpmyadmin, который, как мне кажется, не требуется для устранения нашей проблемы.

Я несколько раз менял файл для нового vhost, что приводило к другому поведению:

Я начал с небольшого конфигурационного файла, в котором было немного (serveradmin, servername, documentroot и log config), но когда я добавляю файл, веб-сайты больше не доступны с ошибкой 403 Forbidden и ничего в error.log или access.log

Я попытался добавить такую ​​директиву каталога:

<Directory "/var/atlassian/application-data/bamboo/xml-data/build-dir/DFWA-DFWAAT2-DEV">
    Options FollowSymLinks
    Require all granted
</Directory>

При этом новый сайт становится доступным, но все остальные сайты перенаправляются на новый сайт.

Затем я попробовал файл, размещенный выше, и с этим запросы устарели, когда я пытался получить доступ к различным веб-сайтам, и в какой-то момент они возвращают ошибку прокси из-за недопустимого ответа (ошибка чтения с удаленного сервера). И у меня это есть в моем error.log:

[mpm_prefork:error] [pid 20284] AH00161: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting

Однако изменение конфигурации mpm_prefork мало что дает.

Я понятия не имею, что делать дальше. Какие-либо предложения?

Я отвечаю здесь, чтобы опубликовать конфигурацию, которая сейчас работает.

Что мне нужно было сделать, так это добавить порт на прокси-сайты

<VirtualHost *:80>

и добавьте оператор каталога, чтобы разрешить доступ к /:

<Directory />
    require all granted
</Directory>

Конфигурационный файл vhost:

<VirtualHost *:80>
    ServerAdmin myemail@example.com
    ServerName example.com
    DocumentRoot /var/atlassian/application-data/bamboo/xml-data/build-dir/DFWA-DFWAAT2-DEV

    <Directory />
        require all granted
    </Directory>

    CustomLog /var/log/apache2/testing/access.log combined
    ErrorLog /var/log/apache2/testing/error.log
</VirtualHost>

Еще раз спасибо за помощь @lain.

это <VirtualHost *> не кажется правильным, это опечатка? возможно <VirtualHost *:80> будет лучше?

Это выглядит очень странно в стандартном определении vhost

ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass / http://testing.exemple.com/
ProxyPassReverse / http://testing.exemple.com/

и почти наверняка будет причиной того, что у вас закончатся рабочие запросы, поскольку вы создали цикл, test.example.com обратные прокси для tesing.example.com, которые меняют ...

Начните с чего-нибудь простого и развивайте его.

<VirtualHost *:80>
    ServerAdmin myemail@example.com
    ServerName testing.example.com
    DocumentRoot /var/atlassian/application-data/bamboo/xml-data/build-dir/DFWA-DFWAAT2-DEV

    CustomLog /var/log/apache2/testing/access.log combined
    ErrorLog /var/log/apache2/testing/error.log
</VirtualHost>