虽然是因为工作原因认识的 JIRA ,不过据说在 issue 管理上也是很厉害了,决定自己也来一套玩玩。

而且反正有了 SSL 证书,顺便了解一下 NGINX 的操作。

基本安装就不赘述了,Atlassian 全家桶的 Setup 简直不能更友好了。NGINX 也是加入 repo 直接使用 rpm 就好。


喜闻乐见的 tl;dr 环节:

请参阅下列官方指导文档:

关于 Crowd 多说一句,从 3.0 版开始,这篇 Guide 中提到的 crowd.properties 文件已经弃用了。实践证明只要在 General 页面中配置好 Base URL ,然后记得配置好 Trusted proxy servers 就可以了。


以下是折腾流水账。

一个不先去找官方文档的傻子分别尝试了以下的配置

proxy_pass_header X-XSRF-TOKEN;
proxy_set_header Origin "https://xxxx.example.com";
port_in_redirect off;
proxy_redirect http://127.0.0.1:8080 https://xxxx.example.com;
autoindex on;
autoindex_exact_size off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $http_x_forwarded_for;
sub_filter_once off;

……emmmm。

重点其实不止在于 NGINX 的转发 header

按照官方 Guide 来看,其实还需要配置 Tomcat 的 Connector ,使其允许反向代理。

Crowd ,JIRA 和 Bamboo 都是这种套路。

Bitbucket 的新版因为已经切换到了 Spring boot 框架,所以不是修改 Connector 而是在 bitbucket.properties 指定相应的配置( server.proxy-port 和 server.proxy-name )。

然后,NGINX 里起码加入这些配置:

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

比如 Crowd 的 Guide 里还要求加入 proxy_redirect ,具体的请查阅对应产品的 Guide 文档。

理论上说到此为止应该结束了

最后就是,把各种 Application link 的 URL 换成 https 的就可以了。如果你也用了 Crowd 来统一管理用户,那么可以把 OAuth 设置成 impersonation 的(似乎是可以减少通信处理)。

不过我还有个问题是,似乎 NGINX 和 OpenSSL 的版本都对,但是不能开启 HTTP/2 。

虽然不知道具体是哪里的问题,而且局域网里其实也无所谓啦……