春鬆客服使用 CDN和HTTPS
簡介
春鬆客服默認使用HTTP協議,支持HTTPS需使用NGINX、Apache、Caddy等反向代理。
閱讀前請先了解
春鬆客服的編譯和部署
春鬆客服的運維管理
春鬆客服端口
春鬆客服默認使用8035和8036兩個端口
端口 | 類型 | 作用 |
---|---|---|
80 | NGINX | 訪問端口 |
8035 | 春鬆客服監聽端口 | 系統頁面 |
8036 | 春鬆客服WebSocket | 消息對話 |
合併端口
受瀏覽器安全限制HTTPS下,無法連接ws協議WebSocket,且大部分CDN無法根據路徑不同回源到不同端口,所以需要把春鬆客服兩個端口合併爲一個端口。
通過反向代理,把路徑 /socket.io
請求代理到 8036端口,其他請求代理到8035端口,實現端口合併,對外只需要一個80或443端口。
春鬆客服使用CC_SOCKET_PORT環境變量來設置前端WebSocket連接端口,可以在.env文件中配置,根據實際環境配置爲80或443。
下面是 NGINX 和 Caddy 相關配置,配置好比配置CC_SOCKET_PORT=80,重啓所有服務,即可通過80端口訪問春鬆客服
NGINX
conf.d/default.conf
server {
root /usr/share/nginx/html;
client_max_body_size 100M;
location / {
# 傳遞請求頭
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_set_header X-Forwarded-Proto $scheme;
proxy_pass http://contact-center:8035;
}
# 代理WebScoket
location /socket.io {
# WebScoket 支持
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_pass http://contact-center:8036;
}
}
Caddy v1
docker-compose.yml
不包含,需自行添加替換NGINX
Caddyfile
:80 {
log stdout
errors stdout
proxy / contact-center:8035 {
# 傳遞請求頭
transparent
}
# 代理WebScoket
proxy /socket.io contact-center:8036 {
transparent
# WebScoket 支持
websocket
}
}
使用CDN加速
經上面配置,春鬆客服已經運行在80端口,設置回源地址爲春鬆客服服務器地址。
CDN開啓https後,需要設置 CC_SOCKET_PORT=443
HTTPS
以 NGINX 爲例配置HTTS,Caddy 見 Caddy tls 配置
複製證書
複製證書到 nginx/certs
目錄
修改NGINX配置
修改 nginx/conf.d/default.conf
添加如下配置,YOUR_CER
和YOUR_KEY
替換爲真實證書名字,完整配置參考 nginx/templates/ssl.conf
.
listen 443 ssl;
ssl_certificate /certs/YOUR_CER.cer;
ssl_certificate_key /certs/YOUR_KEY.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
配置春鬆客服 contact-center
修改 .env
設置 CC_SOCKET_PORT=443
,使WebSocket使用443端口。
重啓項目
執行 docker-compose restart
重啓項目
啓動完成後,使用https地址訪問測試。
FAQ
-
已按說明配置好NGINX,443還是無法訪問
檢查NGINX是否啓動,證書文件權限是否可讀。CentOS需要關閉SELinux -
Mixed Content: The page at ‘https://test.*./’ was loaded over HTTPS, but requested an insecure form action 'http://test.*./admin/role/index.html?
瀏覽器不允許https頁面訪問http資源,檢查CC_SOCKET_PORT是否生效 -
啓用了ssl, 發現重定向的頁面都變成http了, 而不是https。
檢查代理配置,代理需要傳遞Host
X-Real-IP
X-Forwarded-For
X-Forwarded-Proto
,NGINX 使用proxy_set_header
,Caddy 使用transparent
-
啓用HTTPS後,接入代碼裏顯示的還是http://xxx。
按第2條檢查後,使用https地址訪問,接入代碼會顯示正確地址 -
CDN 可以配置多個域名嗎?
可以
開源智能客服系統
春鬆客服是 Chatopera 自主研發的,Apache2.0開源協議授權的智能客服系統,春鬆客服會不斷增強客服系統的智能化,這包括利用自然語言處理、機器學習和語音識別等技術讓客服工作更有效率、客服滿意度更高、成本更低。