ios 9.3.2
header 值带空格
setRequestHeader 时会报错 DOM Exception 12

比如
采用 token 认证方式时 一般会给 Authorization 设置 'Bearer ' + token
如果用户尚未登录,这是 token 值为空
Authorization 的值就为 'Bearer '
就有可能遇到上述的奇怪问题

出现于稍旧的 safari 内核浏览器

大致流程请看这里已经非常详细了,感谢原博主的教程和资源。
这里介绍安装和使用中遇到的几个问题

启动遇到的问题

如果你的服务器只有 1G 内存,使用默认配置是启动不了的,因为默认配置的内存占用比较大。
首先要修改配置
vi /opt/atlassian/confluence/bin/setenv.sh
搜索 CATALINA_OPTS
找到

CATALINA_OPTS="$CATALINA_OPTS -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:+UseG1GC"

-Xms 表示最低内存限制 -Xmx 表示最大内存限制。改成

CATALINA_OPTS="$CATALINA_OPTS -Xms256m -Xmx512m -XX:MaxPermSize=256m -XX:+UseG1GC"

就可以勉强跑起来了。建议 1G 内存的服务器就不要装了,跑不动。。
对于这个问题的官方回复请看这里

mysql 版本的问题

Ubuntu 16.04 安装的 mysql 版本是 5.7,与这个 confluence 版本不兼容,可以在这里下载兼容 mysql 5.7 的 jar 包,替换 mysql-connector-java-5.1.39-bin.jar 就可以啦!
对于这个问题的官方回复请看这里

设置数据库连接的问题

要在默认连接字符串后面加上这个:&useUnicode=true&characterEncoding=utf8&autoReconnect=true
否则中文会乱码

修改 baseUrl

使用 admin 账号在网站的后台管理中修改 baseUrl 并没有什么卵用,点到应用商店还是会提示 baseUrl 不匹配,需要在 /opt/atlassian/confluence/conf/server.xml 中做相应的修改。如果使用 nginx 或者 apache 做代理的话,还需要修改几处地方,具体修改方式查看这里这里

之前搞的免费证书还没过期,但是被标记为不安全了。
今天下午抽空把网站换了 Let's Encrypt,还是这个靠谱。
记录下几个使用中要注意的点,这里以 Ubuntu + Nginx 为例

1. 服务器安装 certbot

可以在这里查看自己使用的系统和服务器软件对应的安装方式

2. 执行 certbot certonly

会看到如下提示

How would you like to authenticate with the ACME CA?
-------------------------------------------------------------------------------
1: Place files in webroot directory (webroot)
2: Spin up a temporary webserver (standalone)
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 

这里会让我们选择 1 还是 2 强烈建议选择 1
因为选择 2 之后 certbot 会在 80 端口临时启动一个 webserver,但是我们的 nginx/apache 往往会占用 80 端口,需要停掉服务才可以继续,一次也就算了,每三个月要续期一次,续期的时候还要停止服务,不太合适。。
所以我们选 1

采用 1 以后需要指定一个文件夹用来存放认证文件,需要提前为要加 https 的域名配置好 nginx,certbot 会访问这个文件来确认这个域名绑定到了当前服务器。
设置方法:
假如我们指定的认证文件存放目录为 /data0/html/certbot
那么就在 nginx 中做如下配置

location '/.well-known/acme-challenge' {
    root /data0/html/certbot;
}

这段配置可以写在另外的文件中,用到时 include 进来。
之后按照 certbot 的提示操作,看到 Congratulations! 就说明证书生成成功了,记录下证书存放的位置,一会配置 nginx 要用到。

3. 配置 https

找到网站的 nginx 配置文件加入一个 server {} 配置如下

server {
    listen 443;

    ...

    ssl on;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ...
}

这里省略掉了与 80 端口相同的配置项,只需将端口改为 443,加入以 ssl 开头的 3 行配置就搞定啦!
当然 example.com 要替换成我们自己域名,这个可以说是最简配置了
更多详细说明可以看这里

4. 自动更新证书

每两个月更新一次并重启 nginx
0 0 1 /2 /usr/bin/certbot renew >> /var/log/certbot.log && /usr/sbin/nginx -s reload

5. 可能遇到的问题

本来配置好了,然后自己清理了一下之前的配置,搞出问题了。。。
之前有个 listen 80 default_server 这样的配置 我又加了个 listen 443 default_server 重启 nginx 之后就不能访问了 会提示 ERR_CONNECTION_CLOSED 或者 ERR_SSL_PROTOCOL_ERROR。。。查了半天才解决这个问题,自己给自己挖坑,醉了。。不过好在涨姿势了。
listen 443 default_server 这种写法是不对的。
由于是泛解析,任意子域名都能访问到网站,https 建立连接是在判断 server_name 之前的,所以采用 https 的访问是无法统一处理的,目前采用的方式是:
在解析的域名中加一条配置

if ($host != 'blog.jiayx.net' ) {
    return 301 https://blog.jiayx.net$request_uri;
}

nginx 在执行 !-e $request_filename 或者 try_files $uri $uri/ /index.php$uri 的时候如果文件所在的文件夹没有执行权限会导致 nginx 认为文件不存在,遇到这种问题的时候,先查看文件夹权限。尤其是从别的地方下载的文件或者压缩包里解压出来的文件