利用Confluence创建了自己的wiki系统以后,觉得通过http访问显得不是很权威,感觉有点假(小绿锁看多了就会这样)。因此,需要动手将wiki系统改造为https加密的系统。
证书申请
证书的申请非常简单,需要自己拥有一个域名,然后要在这个域名所在的域名注册中心进行解析,校验通过以后就可以导出证书了。关于这申请部分的详细内容,我建议大家读一读我的这篇文章。《利用FreeSSL升级网站系统到HTTPS》
配置Nginx
Nginx中的配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| server { client_max_body_size 100m; listen 80; listen 443; ssl on; ssl_certificate /usr/local/etc/ssl/wiki.ourclass.com.pem; ssl_certificate_key /usr/local/etc/ssl/wiki.ourclass.com.key; server_name wiki.ourclass.com; access_log /var/log/nginx/wiki.log main; location / { proxy_pass http://127.0.0.1:8090/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
location /synchrony { proxy_pass http://127.0.0.1:8091; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }
# 重定向non-https流量到https if ($scheme != "https") { return 301 https://$host$request_uri; } }
|
注意,上面的路径配置有两个,分别是/
和/synchrony
,前者就是wiki的主体,后者是用来检测wiki的URL地址的一个心跳服务。其中,第二个映射/synchrony
中的如下配置必须要有,否则前端多人协作的时候就会有一些问题。
1 2 3
| proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
|
上述添加的配置是为了保证wiki中的Websocket服务正常运行。
配置Confluence
很多人配置完了上述的系统以后就觉得可以访问了,但是一直会报一个警告就是
无法检测Base URL,是不是存在代理的配置问题
英文版的是
can't check base url warning
这个问题的解决方案除了上述的/stnchrony
配置外,还需要加入一个Tomcat的配置,就是要在
<install-directory>/conf/server.xml
这个文件里面添加proxyPort和proxyName的配置,如下:
1 2 3 4 5
| <Connector port="8090" connectionTimeout="20000" redirectPort="8443" maxThreads="48" minSpareThreads="10" enableLookups="false" acceptCount="10" debug="0" URIEncoding="UTF-8" protocol="org.apache.coyote.http11.Http11NioProtocol" proxyName="ourclass.com" proxyPort="443" scheme="https"/>
|
保存重新启动wiki系统就好了。
总结
这个问题的解决方案还是需要理解confluence的几个核心的组件,然后在根据这些核心的组件进行相应的配置。尤其是这个/synchrony
组件非常关键,如果不加上这个完整的服务根本就起不来。