前言:首先默认你的Confluence 已经安装好并且设置好证书,此处不做证书导入等介绍。
1、docker
1.拉取仓库nginx镜像,不加版本号默认拉取最新的版本
#docker pull nginx
2.创建一个 start.sh ,启动docker的脚本,内容如下:
docker rm -f nginx 2> /dev/null
docker run -itd \
--name nginx \
--dns=10.0.0.1 \ # 你自己的dns服务器
--restart=always \
-p 127.0.0.1:443:443 \
-p 127.0.0.1:80:80 \
-v /data/nginx_https/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx_https/conf/default.conf:/etc/nginx/conf.d/default.conf \
-v /data/nginx_https/logs/:/var/log/nginx \
-v /data/nginx_https/conf/ssl:/ssl \
nginx
3.创建/data/nginx_https/ 目录
4.文件准备
4.1 新建文件/data/nginx_https/conf/nginx.conf
#运行nginx的用户
user nginx;
#启动进程设置成和CPU数量相等
worker_processes 1;
#全局错误日志及PID文件的位置
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
#工作模式及连接数上限
events {
#单个后台work进程最大并发数设置为1024
worker_connections 1024;
}
http {
#设定mime类型
include /etc/nginx/mime.types;
default_type application/octet-stream;
#设定日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#设置连接超时的事件
keepalive_timeout 65;
#开启GZIP压缩
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
4.2新建文件/data/nginx_https/conf/default.conf
server {
listen 80;
server_name wiki.cs;
listen 443 default ssl;
ssl_certificate /ssl/server.crt;
ssl_certificate_key /ssl/server_nopwd.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
client_max_body_size 100m;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://wiki.cs; # 这是你自己的域名或者默认配置为wiki的ip:8090端口
}
location /synchrony {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://wiki.cs/synchrony;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
}
5.通过openssl生成证书配置https
cd /data/nginx_https/conf/ssl
1)设置server.key,这里需要设置两遍密码:
#openssl genrsa -des3 -out server.key 1024
2)参数设置,首先这里需要输入之前设置的密码,然后需要输入如下的信息,大概填一下就可以了,反正是测试用的, 或者一路回车:
#openssl req -new -key server.key -out server.csr
3) 写RSA秘钥,先输入之前设置的密码:
#openssl rsa -in server.key -out server_nopwd.key
4)获取私钥:
#openssl x509 -req -days 365 -in server.csr -signkey server_nopwd.key -out server.crt
完成这一步之后就得到了我们需要的证书文件和私钥了
Confluence 配置
1.在官网中首先让你设置上下文路径和修改Tomcat 的server.xml文件,但是不知道是不是因为我的confluence为docker,我每次重启docker的时候,server文件都是重新生成的,所以一下为修改生成server.xml的server.xml.j2文件,如果有人遇见了可以直接修改xml的,对应修改即可。
2.修改docker confluence 内的/opt/atlassian/etc/server.xml.j2 文件。
找到Connector 配置项,修改代码中的secure,scheme,proxyName,proxyPort四项。
如secure : secure="{{ atl_tomcat_secure | default(catalina_connector_secure) | default('true') }}"
将最后| default('true') 括号里面改为true,
<Connector port="{{ atl_tomcat_port | default('8090') }}"
maxThreads="{{ atl_tomcat_maxthreads | default('100') }}"
minSpareThreads="{{ atl_tomcat_minsparethreads | default('10') }}"
connectionTimeout="{{ atl_tomcat_connectiontimeout | default('20000') }}"
enableLookups="{{ atl_tomcat_enablelookups | default('false') }}"
protocol="{{ atl_tomcat_protocol | default('HTTP/1.1') }}"
redirectPort="{{ atl_tomcat_redirectport | default('8443') }}"
acceptCount="{{ atl_tomcat_acceptcount | default('10') }}"
secure="{{ atl_tomcat_secure | default(catalina_connector_secure) | default('true') }}"
scheme="{{ atl_tomcat_scheme | default(catalina_connector_scheme) | default('https') }}"
proxyName="{{ atl_proxy_name | default(catalina_connector_proxyname) | default('wiki.cs') }}"
proxyPort="{{ atl_proxy_port | default(catalina_connector_proxyport) | default('443') }}"
relaxedPathChars="[]|"
relaxedQueryChars="[]|{}^\`"<>"
bindOnInit="false"
maxHttpHeaderSize="{{ atl_tomcat_maxhttpheadersize | default('8192') }}"
useBodyEncodingForURI="true"
disableUploadTimeout="true" />
3、管理员登陆页面,配置路由为https,(这一步很重要,不然会有跨域之类的问题)这里应该默认为http://ip:8090
启动
1、sh start.sh # 第一步中创建的文件,启动Nginx。
2、docker restart confluence # confluence 为你的 confluence-docker名
然后页面就可以https访问了