使用Microsoft Internet信息服务(IIS)代理Atlassian服务器应用程序
Atlassian应用程序允许在我们的产品中使用反向代理,但Atlassian支持不提供配置它们的帮助。因此,Atlassian 不能保证为他们提供任何支持。
如果需要配置协助,请在Atlassian Answers上提出问题。
本页说明如何建立Internet信息服务(IIS)充当 Atlassian服务器应用程序的反向代理的网络拓扑 。 该页面已成为成功的秘诀 – 我们建议您按部就班地进行操作。
当您希望用户访问Atlassian应用程序时,您可以考虑使用反向代理:
- 在他们自己的领域,比如
http://our<atlassianapp>.com/
- 在另一个域的子域中,例如
http://my<atlassianapp>.ourcompany.com/
- 在域或子域上的上下文路径,例如
http://ourcompany.com/my<atlassianapp>
- 在不同的HTTP端口上,如9800,9850等
对于更复杂的情况,您可以参考 Microsoft IIS文档,咨询组织中的Internet信息服务(IIS)专家,在Atlassian Answers上提出问题 或联系我们的 Atlassian Experts。
本页面上的说明适用于以下Atlassian服务器应用程序:
- JIRA server applications (JIRA Software Server, JIRA Core, JIRA Service Desk)
- Confluence Server
- Bamboo Server
- Bitbucket Server
- FishEye
- Crucible
- Crowd
在本页后面的示例中,<atlassianapp>引用上面的任何Atlassian服务器应用程序的名称。
Atlassian服务器应用程序捆绑了一个Web服务器,这使得它们无需代理服务器即可运行。对于大多数Atlassian应用程序,捆绑的Web服务器是 Apache Tomcat (FishEye和Crucible使用 Jetty )。因此,在代理Atlassian应用程序时,您需要配置Tomcat(如果使用FishEye或Crucible)或IIS,则配置Tomcat。
在本页:
先决条件
你需要以下内容:
Internet信息服务(IIS)版本7.0,8.0或10.0安装
您可能会发现参考Microsoft IIS文档 以在您的Microsoft Windows Server中安装IIS 很有帮助 。(http://www.iis.net/learn/get-started/whats-new-in-iis-8/installing-iis-8-on-windows-server-2012)
适当的DNS条目并为您的域配置
您应该检查系统或网络管理员,看您的组织当前的DNS配置是否需要更改以支持您希望设置的代理拓扑。
Atlassian应用程序已安装,并可通过Web浏览器访问
以通常的方式安装Atlassian应用程序。
部分A.配置Atlassian应用程序
本节介绍如何配置与每个Atlassian应用程序绑定的Tomcat(或Jetty)Web服务器在逆向代理后运行。
1.停止Atlassian应用程序
停止应用程序也会阻止Tomcat。
2.设置上下文路径
只有当您希望在上下文路径上访问应用程序时,才需要执行此步骤,例如。如果这不是必需的,你可以跳过这一步。 http://ourcompany.com/<contextpath>
FishEye和坩埚
如果您正在代理 FishEye或Crucible,请从管理区域为Jetty配置Web上下文路径。请参阅 配置FishEye Web服务器。
完成之后,请继续阅读下面的B部分。
Bitbucket Server 5.0+
在到位桶服务器5.0+,上下文路径可以通过修改来改变 server.context-path
在 $BITBUCKET_HOME/shared/bitbucket.properties
server.context-path=/bitbucket
JIRA应用程序,Confluence,Bitbucket Server 4.x及更低版本,Bamboo
如果您正在代理任何这些Atlassian服务器应用程序,请server.xml
按以下方式在Tomcat 文件中配置上下文路径。
server.xml
file depends on your application, operating system, and installation location.Common default installation locations for Atlassian applications are:
- Linux:
/opt/atlassian/<application-name>
- Windows:
C:\Program Files\Atlassian\<application-name>
- Windows:
C:\Atlassian\<application-name>
Locations in Atlassian application’s folder structure:
Application | server.xml location |
---|---|
Bamboo | <install-path>/conf/ |
Confluence | <install-path>/conf/ |
Crowd | <install-path>/apache-tomcat/conf/ |
Crucible | As for FishEye. |
FishEye | The FishEye configuration file is config.xml , see Configuring the FishEye web server and How to enable Fisheye/Crucible to listen to web requests on additional ports. |
JIRA applications | <install-path>/conf/ |
Bitbucket Server 5.0 | N/A, replaced by <Bitbucket home directory> /shared/bitbucket.properties
Please read through Migrate server.xml customizations to bitbucket.properties |
Bitbucket Server 4.0 – 4.14 | <Bitbucket home directory> /shared/server.xml |
Stash 3.8 – 3.11 | <Stash home directory>/shared/
If you are on any of these later releases but your We recommend that you copy |
Stash 3.7 and earlier | <install-path>/conf/ |
<install-path>
refers to where the application was installed on your system.
<Context path="" docBase="${catalina.home}/atlassian-<atlassianapp>" reloadable="false" useHttpOnly="true">
更改指令以添加新的上下文路径:
<Context path="/<contextpath>" docBase="${catalina.home}/atlassian-<atlassianapp>" reloadable="false" useHttpOnly="true">
为< contextpath
> 使用自己的值。通常,每个应用程序都会使用不同的上下文路径。
重要的是,该 path
值具有前导斜杠(/
) path="/<contextpath>"
而不是 path="<contextpath>"
。
使用这些说明更新Crowd上下文路径。
3.配置连接器指令
3.1。配置FishEye / Crucible网络服务器(Jetty)
如果您使用的是FishEye或Crucible,请在Admin区域中配置代理主机,代理方案和代理端口。请参阅 配置FishEye Web服务器。
如果您正在配置Bitbucket Server 5.0
从Bitbucket Server 5.0开始,您不能直接配置任何Tomcat连接器,因此本节中的配置仅适用于Bitbucket服务器4.14或更早版本。
server.xml
配置已被替换为 <Bitbucket home directory>
/shared/bitbucket.properties
请仔细阅读 将server.xml自定义项迁移到bitbucket.properties以检查相应的属性,并翻译下面的配置。完成映射后,bitbucket.properties
转到B部分。配置SSL。
config.xml
通过配置类似于:也可以直接在配置中更改配置。
<web-server site-url="http://<subdomain>.<domain>.com" context="">
<http bind=":8060" proxy-port="80" proxy-scheme="http" proxy-host="<subdomain>.<domain>.com"/>
</web-server>
3.2。配置其他Atlassian应用程序Web服务器(Tomcat)
如果您使用的是其他Atlassian服务器应用程序,请按照以下说明配置指令。 Connector
对于每个应用程序,找到正常(非SSL) Connector
在Tomcat的指令 server.xml
文件,并添加 scheme
, proxyName
和 proxyPort
属性的内部Connector
指令,如下图所示。使用其他属性( 包括for) 的默认值port
, 除非您有特别的理由更改它们,并使用您自己的域名作为proxyName
值:
<Connector port=<default>
maxThreads=<default>
minSpareThreads=<default>
connectionTimeout=<default>
enableLookups=<default>
maxHttpHeaderSize=<default>
protocol=<default>
useBodyEncodingForURI=<default>
redirectPort=<default>
acceptCount=<default>
disableUploadTimeout=<default>
proxyName="<subdomain>.<domain>.com"
proxyPort="80"
scheme="http"/>
请注意,该 proxyName
参数应设置为 IIS将配置为提供服务的 FQDN。这是用户在他们的浏览器中输入访问应用程序的地址。例如:
- 用于访问类似于子域的应用程序
<atlassianapp>.ourcompany.com
http://<atlassianapp>.ourcompany.com/
- 用于
ourcompany.com
像上下文路径一样访问应用程序 。在这种情况下,上下文路径不应该包含在 参数中,并且您将在上面的第2步中设置该指令。http://ourcompany.com/<atlassianapp>
proxyName
Context
- 如果SSL在IIS处终止,则使用proxyPort =“443 ”和scheme =“https”。
有关配置Tomcat连接器的更多信息,请参阅 Apache Tomcat 7.0 HTTP连接器参考。
B部分:配置Internet信息服务(IIS)
1.确保您的IIS服务器上安装了ARR,URL重写和请求过滤
如果您 的IIS服务器上没有 应用程序请求路由 和URL重写,请使用Web Platform Installer安装它们 。
如果请求筛选未安装在您的IIS实例中,则可以在https://www.iis.net/configreference/system.webserver/security/requestfiltering上进行安装 。
2.启用ARR上的代理
- 从IIS7控制台中,单击 Server_Name 并打开 应用程序请求路由缓存:
- 从 右侧的 动作面板中,选择“ 服务器代理设置 ”
- 选中“ 启用代理服务器 ”并将HTTP版本设置 为“ HTTP / 1.1 ”:
- 取消选择“在响应标题中反向重写主机”,然后将所有其他选项保留为默认值,然后单击应用以应用更改。
3.添加一个新的IIS网站
在本文中,该网站添加了jira.example.com。您可以使用正确的实例/域更改它。
有关如何在IIS上创建网站的更多信息,请访问 https://support.microsoft.com/en-us/kb/323972。
4.添加一个新的URL重写规则
- 从IIS控制台中,单击 jira.example.com 并打开 URL重写:
- 从 右侧的“ 动作”面板中,选择“ 添加规则 ”并选择“ 空白规则 ”;
- 为规则添加名称;
- 将匹配网址 设置 为:
- 请求的URL: 匹配模式
- 使用: 正则表达式
- 模式: (。*)
- 忽略大小写: 检查
- 将操作 设置 为:
- 操作类型: 重写
- 重写网址: http:// <JIRA_url:Port> / {R:1 }
- 附加查询字符串: 选中
- 标记 停止处理后续规则 ;
- 点击 应用 以应用更改。
5.调整请求过滤
- 双击站点名称以在站点配置部分中移动。
- 点击 请求过滤。
- 然后点击 编辑功能设置:
- 选中 Allow double escaping 并点击OK:
Confluence 6.0特别说明:
如果您使用Confluence 6.0或更高版本的Synchrony(协作编辑需要),则需要确保满足以下先决条件:
- 您必须安装IIS 8.0或更高版本
- 您必须具有 安装了IIS的Web套接字支持
- 你必须有 应用程序请求路由3.0安装
CONFSERVER-46504 – 粘贴大量文本将断开Synchrony RESOLVED
您还需要在web.config文件中使用以下重写规则:
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="Synchrony HTTP" stopProcessing="true">
<match url="synchrony/(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="http://localhost:8091/synchrony/{R:1}" />
</rule>
<rule name="Synchrony Web Sockets Reverse Proxy" stopProcessing="true">
<match url="ws://(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="ws://localhost:8091/{R:1}" />
</rule>
<rule name="Confluence Reverse Proxy" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="http://localhost:8090/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
<system.web>
<!-- This keeps IIS from complaining about special characters in the url. Also has some controls for max upload size. Set to the equivalent of the above, but in kilobytes instead of bytes. (ex. 61440 = 60MB) -->
<httpRuntime executionTimeout="20" maxRequestLength="xxxxx" requestPathInvalidCharacters="" requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>
在上面的例子中,Confluence在没有上下文路径的情况下被访问,并且不使用Confluence的内部代理。请参阅管理协作编辑以获取其他代理配置选项。
由于IIS 8.0不支持Sec-WebSockets-Extension permessage-deflate头文件,因此 如果您作为Windows服务运行,您还需要将以下内容添加到您的<install-path>/bin/setenv.bat
或 setenv.sh
如果通过脚本启动Confluence或通过命令行或注册表启动。请参阅 配置系统属性。
CATALINA_OPTS=-Dorg.apache.tomcat.websocket.DISABLE_BUILTIN_EXTENSIONS=true %CATALINA_OPTS%
C部分最终配置
重启每个应用程序
现在,重新启动每个应用程序并确保您可以使用新的URL访问它们。请参阅上面的停止和启动说明。
设置应用程序的基本URL
对于每个Atlassian应用程序,请将基本URL设置为您在代理中配置的地址,即Internet Information Services(IIS)将提供的URL(例如 http://www.example.com/<atlassianapp>
)。
D部分在同一个IIS实例上配置多个站点
可选:在某些情况下,多个站点将托管在同一个IIS安装中。如果你想要有一个子域名结构( 例如jira.example.com, confluence.example.com),你可以创建不同的网站,如下所示: