Я пытаюсь настроить обратный прокси-сервер с Apache и экземпляром Tomcat в комплекте с JIRA. Я следил за направления в вики JIRA на T. Сайт отлично отображается на http://ourdomain:8080/jira
просто отлично, поэтому я знаю, что Tomcat server.xml
файл был установлен правильно в соответствии с их инструкциями.
Однако я не могу заставить работать обратный прокси Apache по причинам, которые ускользают от меня, несмотря на значительное чтение.
Я запускаю Apache2.2 на Ubuntu с включенными mod_proxy и mod_proxy_http, конечно. В default
сайт работает нормально; моя конфигурация сайта - это всего лишь модифицированная версия этого. Вот мой jira
конфигурация виртуального хоста в /etc/apache2/sites-enabled/jira
:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName ourdomain.com
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</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
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
# JIRA Proxy Configuration
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /jira http://ourdomain.com:8080/jira
ProxyPassReverse /jira http://ourdomain.com:8080/jira
</VirtualHost>
Когда я захожу на сайт в браузере, я получаю 404 Не Найдено со следующим (стандартным) текстом:
Запрошенный URL / jira не найден на этом сервере
Сервер Apache / 2.2.22 (Ubuntu) на 80-м порту ourdomain.com
Между тем, выход из apachectl -S
является:
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server ourdomain.com.com (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost ourdomain.com (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost ourdomain.com (/etc/apache2/sites-enabled/jira:1)
Так что я могу получить доступ к сайту по адресу ourcomain.com:8080/jira
но не на ourdomain.com/jira
.
Возможно, эта последняя строка указывает на проблему - если он слушает port 8080
вместо этого, и, соответственно, я должен изменить запись vhost выше?
Ясно, что у меня что-то не так, но я этого не вижу; моя конфигурация появляется в точном соответствии с указаниями в вики JIRA. Некоторая помощь будет очень признательна. Я рассмотрел несколько других ответов здесь, и с ними тоже не повезло.
У меня наша JIRA настроена почти идентичным образом, но через прокси на защищенный сайт.
Единственная разница, которую я могу заметить между моей конфигурацией и вашей, заключается в том, что я оставил существующий / etc / apache2 / sites-enabled / 000-default как есть:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</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
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Но затем добавил новый файл / etc / apache2 / sites-enabled / jira-mod_proxy, который содержал
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLProxyEngine on
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /jira https://localhost:8443/jira
ProxyPassReverse /jira https://localhost:8443/jira
Если вы игнорируете порты 8443, которые я использую для SSL, то единственные различия, которые я вижу, это
используя localhost, а не полное доменное имя, но это не имеет значения, потому что вы можете получить доступ к своему сайту по адресу http://ourdomain:8080/jira
поэтому кот явно прослушивает ваш реальный IP-адрес
Имея <Proxy>
конфигурация вне <VirtualHost>
элемент.
Так, может быть, конфигурация прокси-сервера должна выходить за рамки настроек виртуального хоста?
У тебя есть ServerName ourdomain.com
в /etc/apache2/sites-enabled/000-default
, а ServerName ourdomain.com
в /etc/apache2/sites-enabled/jira
. В 000-default
один имеет приоритет, потому что он сначала по алфавиту; ваша конфигурация jira не используется.
Изменить ServerName ourdomain.com
линия в 000-default
файл, или, если вы его не используете, просто a2dissite default
.