单机部署网络配置
只有服务器直接暴露公网IP不使用NG,或者服务器暴露公网IP且同时本机部署NG才能算单机部署,其他情况应该是多入口或者单入口的单节点情况。
1. 配置文件修改
修改IM服务配置文件,server.ip
配置为授权地址。端口配置保持默认既可以。如果有Web客户端,需要打开websocket_port
的配置。如果需要支持HTTPS,需要打开https_port
和secure_websocket_port
,并配置好JKS证书(包括jks_path
,key_store_password
和key_manager_password
)。
2. NG配置
如果不使用NG,请忽略掉本节内容。把IM服务配置文件中的local_port
改成其他端口,比如8000。然后参考添加如下NG配置:
upstream imserver_cluster {
server 192.168.2.5:8000;
}
server {
listen 80;
server_name 授权域名
root html;
index index.html index.htm index.php;
proxy_connect_timeout 10s;
location /route {
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_pass http://imserver_cluster;
}
location /api {
proxy_pass http://imserver_cluster;
}
location /im {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'POST, OPTIONS';
add_header Access-Control-Allow-Headers 'p,cid,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
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_pass http://imserver_cluster;
if ($request_method = 'OPTIONS') {
return 204;
}
}
location /fs {
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_pass http://imserver_cluster;
}
location /robot {
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_pass http://imserver_cluster;
}
location /channel {
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_pass http://imserver_cluster;
}
}
3. 域名解析
如果授权地址为域名,需要把授权地址域名解析到当前IM服务的公网地址。
4. 防火墙
防火墙放开80,1883的入访权限。如果有web客户端,需要放开8083的入访权限,如果支持https,需要另外放开443和8084的入访权限。
5. 验证
所有操作都在外网进行,检查是否可以从外网连入。
5.1. 检查HTTP
检查HTTP端口:浏览器打开http://授权地址/api/version
看看是否返回json.
5.2. 检查TCP
检查TCP端口:telnet 授权地址 1883
看看是否能够连上。
5.3. 检查Web
如果有web客户端,可以用http://docs.wildfirechat.cn/web/wstool/index.html
这个连接检查一下websocket。如果是HTTP的站点,地址为ws://授权地址:8083
;如果站点是HTTPS的,地址为wss://授权地址:8084
。
如果站点是HTTPS的,还需要验证HTTPS的路由是否正确,浏览器打开地址https://授权地址/api/version
看看是否返回json.