Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin
Excerpt
hiddentrue

请勿更改本页的标题。它引用自“仪表盘诊断”插件。

Include Page
JSDOC:_Note About Proxies
JSDOC:_Note About Proxies

本页介绍了如何利用 mod_proxymod_ssl,将 Apache HTTP Server(也称为 httpd)与 JIRA 集成,以便 Apache 通过 HTTPS 作为反向代理运行。如果需要 HTTP 配置,请参见我们的将 JIRA 与 Apache 集成文档。通过配置 Apache,您可以在非标准 HTTP 端口(如 8080)上运行 JIRA,并且用户能够通过标准 HTTPS 访问 JIRA,因为他们的通信将通过代理传送并在网络外部加密。

您可以配置 Apache 以允许通过以下任一方式访问 JIRA:

这意味着 SSL 证书将在 Apache 而不是 Tomcat 中进行管理,此外,Apache 和 Tomcat 之间的连接也不会加密。但浏览器和外部网络之间的连接将被加密。这适用于 JIRA 服务器与 Apache 服务器位于同一网络内的配置,如下所示:

No Format
客户端浏览器 -> HTTPS -> Apache 代理 -> HTTP -> Tomcat (JIRA)
Panel

本页内容:

Table of Contents
maxLevel4
minLevel1

这是具有多个 SSL 证书和/或 Web 应用,并且都在一个位置 (Apache) 进行管理的网络的通用配置。

如果需要更复杂的解决方案,请参见 Apache HTTP Server 版本文档、咨询组织内的 Apache SME,如果需要,还可以在 Atlassian Answers 上提问,或与我们的 Atlassian 专家联系。

Expand
title展开可查看常见 Apache 配置的示例
  1. JIRA 在 LAN 内一个服务器的 8080 端口上运行,该服务器无法从外部访问(路由器/防火墙不会将 8080 端口的流量转发给它)。
  2. Apache 设置在另一个服务器(或与 JIRA 相同的服务器)上,该服务器可以通过 HTTPS (443) 从外部访问。
  3. 然后,系统通过 HTTPS 使用相应的 URL (VirtualHost) 访问 Apache,从而将流量路由到 JIRA 服务器或从中路由出来。

开始之前

(warning) 预计在配置 Apache 之前,SSL 证书已经过 CA 签名并采用 PEM 格式。有关准备和生成 SSL 证书方面的帮助,请咨询 SSL 供应商(例如,GoDaddy、Verisign、RapidSSL)。

确定是否使用域、子域或上下文路径在很大程度上取决于所提供的 SSL 证书类型以及有关网站配置的所有业务规则。要准确无误地运行 SSL,域就必须与证书的通用名称 (CN) 相匹配。

Expand
title展开有关配置 FQDN 以匹配证书 CN 的更多信息

下表说明了哪些 URL 可与证书 CN 一起使用,还推荐了可以使用的 URL。

CN 中带有星号 (*) 的证书是通配符证书,可以支持该域的任何子域。如果您不确定要使用的 URL,请咨询系统管理员和提供证书的 SSL 供应商。

步骤 1:配置 Tomcat

  1. 关闭 JIRA。
  2. (可选:如果 JIRA 不需要上下文路径,请跳过此步骤。)

    编辑 Tomcat 的 server.xml,使其包含所需的 JIRA 上下文路径。下面的示例使用了 path="jira",这意味着,如果采用的是默认 JIRA 端口,即可通过 http://jiraserver:8080/jira 访问 JIRA。

    Code Block
    languagehtml/xml
    <Engine defaultHost="localhost" name="Catalina">            <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">                <Context docBase="${catalina.home}/atlassian-jira" path="/jira" reloadable="false" useHttpOnly="true">                    <!--                     ====================================================================================                     Note, you no longer configure your database driver or connection parameters here.                     These are configured through the UI during application setup.                     ====================================================================================                    -->                    <Resource auth="Container" factory="org.objectweb.jotm.UserTransactionFactory" jotm.timeout="60" name="UserTransaction" type="javax.transaction.UserTransaction"/>                    <Manager pathname=""/>                </Context>            </Host>

    (info) 确保 path 值的前面带有正斜杠 (/)。例如,应为 path="/jira" 而不是 path="jira"

  3. 编辑 Tomcat 的 server.xml,使其包含用于代理请求的单独的连接器。这需要 schemeproxyName 和 proxyPort 属性。将这些属性替换为代理的相应域和端口,如下例所示:

    Code Block
    languagehtml/xml
    <Service name="Catalina"> 	<!-- Apache Proxy Connector with values for scheme, proxyName and proxyPort -->        <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"             scheme="https" proxyName="jira.atlassian.com" proxyPort="443"/> 	<!-- Standard HTTP Connector -->        <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" port="8081" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true" />
  4. 禁止在 Tomcat 内重定向到 HTTPS(如果已启用)- 例如,在通过 SSL 或 HTTPS 运行 JIRA 应用 中对 WEB-INF/web.xml 做出的变更将导致使用 Apache 时发生错误。
  5. 启动 JIRA。
  6. 测试 JIRA 是否可通过标准连接器访问,如果适用,请使用上下文路径(如 http://jiraserver:8081/jira)进行测试。
  7. 通过相应的代理连接器访问 JIRA,测试新连接器是否已生效。具体行为取决于上下文路径:
    1. 如果上下文路径为空或根 (/) 路径,则通过代理连接器(例如 http://jiraserver:8080/)访问 JIRA 时,您会在进入 JIRA 时收到警告:
    2. 如果上下文路径不为空或根目录 (/),如 /jira,则通过代理连接器(如 http://jiraserver:8080/jira)访问 JIRA 会将您重定向到已配置的代理(如 https://jira.atlassian.com/jira)。

为了在 JIRA 上进行测试,我们使用两个不同的 Tomcat 连接器并在需要时绕过代理,因为这在故障排除时会很有用。预计无法从网络外对标准连接器进行外部访问(防火墙不会向其转发任何端口)。

Hide

步骤 2:配置 Apache HTTP Server

本文档未介绍如何安装 Apache 和配置 DNS。此外,文档假设已针对 JIRA 域安装了 Apache 2.2 并配置了 DNS 条目。由于 Apache 的配置特定于所使用的操作系统,因此本文档只提供了部分发行版及其配置。

2.1 启用代理模块

Debian/Ubuntu
Expand
title展开以查看 Debian/Ubuntu 说明
  1. 按照以下方式启用模块:

    Code Block
    languagebash
    $ sudo a2enmod proxy_http sslConsidering dependency proxy for proxy_http:Enabling module proxy.Enabling module proxy_http.Enabling module ssl.See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.To activate the new configuration, you need to run:  service apache2 restart
  2. 重新启动 Apache。
Windows/其他操作系统
Expand
title展开以查看 Windows/其他操作系统说明
  1. 找到并编辑 httpd.conf 文件,添加以下行(如果不存在):

    Code Block
    LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_http_module modules/mod_proxy_http.soLoadModule ssl_module modules/mod_ssl.so
  2. 重新启动 Apache。

2.2 配置 Apache 以使用这些模块

Debian/Ubuntu
Expand
title展开以查看 Debian/Ubuntu 说明
  1. 切换到用户 root
  2. 备份现有实例或创建新实例。本文档不涵盖有关创建新实例的内容(复制默认实例应该足够了)。
  3. 修改 $APACHE_INSTALL/sites-available 中的现有实例,如 default-ssl
  4. 将以下内容添加到 VirtualHost 中,将 jiraserver 替换为 JIRA 服务器的主机名并修改端口(若需要)。

    在其自己的域或子域中访问:
    No Format
    # JIRA Proxy Configuration:<Proxy *>        Order deny,allow        Allow from all</Proxy>SSLProxyEngine          OnProxyRequests           OffProxyPreserveHost       OnProxyPass               /       http://jiraserver:8080/ProxyPassReverse        /       http://jiraserver:8080/

    (info) 如果 URL 末尾缺少正斜杠,则会出现代理错误,因此请确保正确添加正斜杠!

    使用以下上下文路径:
    No Format
    # JIRA Proxy Configuration:<Proxy *>        Order deny,allow        Allow from all</Proxy>SSLProxyEngine          OnProxyRequests           OffProxyPreserveHost       OnProxyPass               /jira       http://jiraserver:8080/jiraProxyPassReverse        /jira       http://jiraserver:8080/jira

    (info) 使用的路径必须与 Tomcat 上下文路径相同。例如,将 /jira 转发到 /jira520 必须使用大量的重写规则,而这些规则有时并不可靠。

  5. 按照以下方式启用实例:

    Code Block
    bash
    bash
    # a2ensite default-sslEnabling site default-ssl.To activate the new configuration, you need to run:  service apache2 reload
  6. 将证书和私有密钥复制到相应目录中。
  7. 按照以下方式将其包含在 Apache 配置中,位于 VirtualHost 内:

    No Format
    SSLCertificateFile    /etc/ssl/certs/jira.crtSSLCertificateKeyFile /etc/ssl/private/jira.key
  8. (可选):SSLCertificateChainFile 的配置将包含由 CA 供应商提供并签字的中间证书。请咨询 CA 供应商以确认这是否有必要。

    No Format
    SSLCertificateChainFile /etc/ssl/certs/jiraintermediate.crt
  9. 重新加载 Apache 配置。
  10. 进行测试,方法是通过 Apache 访问 JIRA,例如 http://jira.comhttp://atlassian.com/jira
Windows/其他操作系统
Expand
title展开以查看 Windows/其他操作系统说明
  1. 找到并编辑 httpd.conf 文件。
  2. 将以下内容添加到 VirtualHost 中,将 jiraserver 替换为 JIRA 服务器的主机名并修改端口(若需要)。

    在其自己的域或子域中访问:

    No Format
    # JIRA Proxy Configuration:<Proxy *>        Order deny,allow        Allow from all</Proxy>SSLProxyEngine          OnProxyRequests           OffProxyPreserveHost       OnProxyPass               /       http://jiraserver:8080/ProxyPassReverse        /       http://jiraserver:8080/

    (info) 如果 URL 末尾缺少正斜杠,则会出现代理错误,因此请确保正确添加正斜杠!

    使用上下文路径:

    No Format
    # JIRA Proxy Configuration:<Proxy *>        Order deny,allow        Allow from all</Proxy>SSLProxyEngine          OnProxyRequests           OffProxyPreserveHost       OnProxyPass               /jira       http://jiraserver:8080/jiraProxyPassReverse        /jira       http://jiraserver:8080/jira

    (info) 使用的路径必须与 Tomcat 上下文路径相同。例如,将 /jira 转发到 /jira520 必须使用大量的重写规则,而这些规则有时并不可靠。

  3. 将证书和私有密钥复制到相应目录中。
  4. 按照以下方式将其包含在 Apache 配置中,位于 VirtualHost 内:

    No Format
    SSLCertificateFile /etc/ssl/certs/jira.crtSSLCertificateKeyFile   /etc/ssl/private/jira.key
  5. (可选):SSLCertificateChainFile 的配置将包含由 CA 供应商提供并签字的中间证书。请咨询 CA 供应商以确认这是否有必要。

    No Format
    SSLCertificateChainFile /etc/ssl/certs/jiraintermediate.crt
  6. 重新启动 Apache。
  7. 进行测试,方法是通过 Apache 访问 JIRA,例如 http://jira.comhttp://atlassian.com/jira

2.3 将 HTTP 重定向到 HTTPS

可以通过以下任一方法执行此操作:

  • 设置 HTTP VirtualHost 以跳转到同一 Tomcat 连接器。Tomcat 将使用 schemeproxyName 和 proxyPort 参数重定向到 HTTPS。这可以按照将 JIRA 与 Apache 集成文档中所述来实现。
  • 使用 mod_rewrite(此模块可能需要启用),将以下内容添加到 HTTP VirtualHost 中:

    No Format
    RewriteEngine OnRewriteCond %{HTTPS} offRewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

步骤 3:配置 JIRA

  1. 配置 JIRA 选项中所述,将 Use gzip compression 设置为 OFF。众所周知,GZIP 压缩在使用反向代理时会导致性能问题,特别是在代理还压缩流量的情况下更是如此。
  2. 将 Base URL 设置为 JIRA 将要访问的 FQDN,例如 https://jira.atlassian.com。同样可参见配置 JIRA 选项
    (warning)只能将 JIRA 配置为响应单个 URL,并且基本 URL(如配置 JIRA 选项中所述)必须与最终用户访问的 URL 一致。配置错误可能会导致 JIRA 内出现严重问题,例如活动流和仪表盘小工具无法正常工作。
  3. 通过在 FQDN 上访问 JIRA 进行测试(例如:https://jira.atlassian.com),确保可以访问 JIRA ,并且所有仪表盘小工具都能正确显示。

故障排除

Include Page
对 Apache 进行故障排除
对 Apache 进行故障排除

另请参见