У меня есть один большой сервер (временный, и некоторые веб-сайты в какой-то момент будут перемещены на несколько других), на котором я установил все инструменты, необходимые для моего проекта (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>