- 网站服务常见问题
- 设置的网站或者服务端口无法连接怎么办?
- 502 Bad Gateway 是怎么回事?
- 504 Gateway Timeout 是怎么回事?
- 使用CDN后Header无法读取?
- 使用CDN后浏览器无限重定向?
- 出现 ERR_SSL_PROTOCOL_ERROR 错误是怎么回事?
- 提示 “listen tcp xxx: bind: address already in use” 错误
- 提示 “listen tcp xxx:yyy: bind: cannot assign requested address”
- 提示 “listen tcp :80: bind: permission denied”
- 开启HTTPS后浏览器提示 ERR_SSL_VERSION_OR_CIPHER_MISMATCH
- 已经上传了证书但是浏览器提示不安全
- 源站提示无法找到域名
- 499是什么错误?
- 如何禁止用户通过节点IP访问网站?
网站服务常见问题
设置的网站或者服务端口无法连接怎么办?
如果在客户端无法连接已经在节点上部署的网站服务节点,那么可以从以下几点来诊断问题:
- 检查域名对应网站已部署到对应集群,你需要在”网站服务”列表中查看是否存在域名对应的网站服务,检查是否已经在网站服务中绑定了访问域名(当前网站”设置”–“域名”页面中);如果你使用的是IP访问,那么请在集群设置中允许通过节点IP访问(”集群设置”–“服务设置”–“禁止未绑定域名访问”选项–“允许使用节点IP访问”子选项);
检查域名已经解析到节点。如果你使用了域名,请确保域名解析生效而且是正确的,可以使用
ping
命令来确认,类似于(把其中的goedge.cn
换成你自己的域名):ping goedge.cn
检查是否能够Ping通,以及Ping的结果出现的IP是否是你的服务器节点的IP。
- 检查服务是否已经设置了监听端口,一般为http的
80
,https的443
; 检查节点进程是否已经启动,通常可以在服务器上通过
ps
命令来检查:ps ax|grep edge-node
结果应该类似于:
[root@web001 ~]# ps ax|grep edge-node
7930 ? Sl 65:32 bin/edge-node
其中
7930
就是edge-node
的进程ID(不是固定的),如果没有这一行,则说明你的边缘节点没有启动,请执行edge-node start
启动节点;如果执行命令后,仍然不显示进程,可以进入步骤4检查日志;检查启动过程中有无错误,可以通过edge-node安装目录下的
logs/run.log
文件来查看启动日志:cd $EdgeNode安装目录
tail -f logs/run.log
可以通过查看
logs/panic.log
来查看是否有严重错误:cd $EdgeNode安装目录
cat logs/panic.log
如果有严重错误,请及时上报给开发者以寻求帮助;
检查端口是否已监听,假设
80
和443
是你指定的服务端口:# 以下这两条命令要分开运行
netstat -anp|grep 80|grep LISTEN
netstat -anp|grep 443|grep LISTEN
检查是否能返回内容,如果没有这些端口在监听,那么可能的几个原因有:
- 当前节点所在集群上没有部署任何网站;
- 服务没有设置正确的端口号;
- 服务没有部署到对应的集群中;
- 节点没有启用,如果已经启用,在”节点详情”中将会显示”已启用”;
- 节点没有处在正确的集群中;
- 如果节点已经在监听,但是访问到的是别的服务(比如
nginx
),那么说明有端口冲突,请停用或者修改其他服务; 检查边缘节点是否有防火墙,可以在客户端上通过
telnet
检查是否能够连接服务端口:# 以下这两条命令要分开运行
telnet 192.168.1.100 80
telnet 192.168.1.100 443
其中
192.168.1.100
换成你的边缘节点所在服务器的IP,如果连接不了,通常是防火墙设置问题,请修改防火墙设置。如果你不确定防火墙设置是否正确,不妨先停用所有的防火墙(常见的有iptables和firewalld),然后试着访问网站服务,看是否能够成功,来确认是否是防火墙的问题;检查云服务控制台是否有安全策略,如果有的话,需要将相关端口(比如
80
和443
)加入到通过名单中,比如阿里云的安全组如下:检查自己IP是否在黑名单中,可以在”网站服务”菜单–“IP名单”菜单中查询自己的IP,查看是否被封锁;
- 检查当前IP是否被WAF的其他规则拦截(包括国家/地区封禁、省份封禁),可以在访问日志–WAF中查看WAF封禁记录;
检查访问的域名是否在某些国家或地区被封禁,可以在别的地区服务器上使用curl命令来检查,看看是否能够正常访问,比如:
curl https://goedge.cn
502 Bad Gateway 是怎么回事?
出现 502 Bad Gateway
通常说明源站无法连接,可以在访问日志里查看详情(如果开启了访问日志的话)。此时,请检查:
- 你有没有在源站中设置源站;
- 你是否在源站设置中设置了源站的专属域名,导致用户访问专属域名以外的域名时无法匹配到源站;
- 你填写的源站的协议、域名、端口等信息是否正确;
- 检查源站是否返回了
502
; - 通过
curl
或者wget
等工具在边缘节点上直接访问源站URL,检查在边缘节点上是否能正常访问源站; - 如果源站设置有防火墙或者限流设置,请关闭或者设置边缘节点为白名单。
504 Gateway Timeout 是怎么回事?
出现 504 Gateway Timeout
通常说明源站连接超时,可以在访问日志里查看详情(如果开启了访问日志的话)。此时,请检查:
- 检查源站的协议、域名、端口是否正确;
- 源站是否返回了
504
; - 通过
curl
或者wget
等工具在边缘节点上直接访问源站URL,检查在边缘节点上是否能正常访问源站; - 如果源站设置有防火墙或者限流设置,请关闭或者设置边缘节点为白名单。
在访问日志详情(访问日志后面图标点开)中”综合信息”页面会给出具体的错误,通常是:
dial tcp: xxx.xxx.xxx.xxx .. i/o timeout
- 指的是节点通过TCP连接源站超时;通常是节点和源站的网络连接状况不佳,也有可能是源站设置了一些限流、限速措施,导致边缘节点无法正常连接源站;dial tcp: lookup example.com on xxx.xxx.xxx.xxx
- 指的是节点通过TCP连接DNS解析服务超时;tls handshake timeout
- TLS握手超时
使用CDN后Header无法读取?
有些自定义的Header经过CDN之后,源站无法读取,可能的原因是GoEdge会自动将用户自定义的Header名称换为标准的Header,比如用户的请求中含有:
auth-key: MTIzNDU2
X-WWW-Echo: Helo
那么,经过CDN之后,源站接收到的Header会变成:
Auth-Key: MTIzNDU2
X-Www-Echo: Helo
在HTTP/2中在浏览器端查看的Header可能全部是小写的,但是实际在传输中Header都是首字母大写的。
知道原因后,我们就有了解决方案:
- 方法1:修改源站的程序,从原先不标准的Header名改为标准的Header名,比如从
auth-key
改为Auth-Key
; - 方法2:在服务设置”HTTP Header” – “请求Header”中自定义一个新的非标准Header,比如名称为
auth-key
,值为${header.Auth-Key}
,这样可以强行添加一个非标准Header在请求中,源站接收到的就是非标准的auth-key
。
使用CDN后浏览器无限重定向?
如果使用CDN后,浏览器端显示Too Many Redirects
等无限重定向的现象,那么常见的可能原因有如下几个:
- 可能原因1:源站中设置的源站域名和CDN域名一致:如果源站的域名和用户访问CDN的域名是一样的,那么CDN将无法正常读取源站;请务必检查源站设置,防止源站中域名配置和CDN冲突;
- 可能原因2:源站地址是HTTP,但是在源站设置了自动跳转到HTTPS,所以导致源站一直在HTTP-HTTPS之间不断跳转,这种情况下,有以下几个解决方法:
- 取消源站的自动跳转设置(或者根据当前访问域名来判断是否跳转,而不是全部强制跳转);
- 源站地址改为HTTPS的,防止源站自动跳转。
出现 ERR_SSL_PROTOCOL_ERROR 错误是怎么回事?
如果你在浏览器上打开网站出现类似于以下的错误:
此网站无法提供安全连接
xxx.com 发送的响应无效。
ERR_SSL_PROTOCOL_ERROR
通常原因:
- 可能开启了网站443端口,但是没有上传SSL证书导致,你可以上传证书或者关闭
443
端口来解决此问题; - 你没有在对应的网站服务里绑定当前访问的域名;
- 可能错误地在HTTP里将端口设置为443,请改为在HTTPS里设置这个端口。
提示 “listen tcp xxx: bind: address already in use” 错误
如果启动后,系统提示 “listen tcp xxx: bind: address already in use”,表示除了GoEdge之外还有别的服务进程在使用这个端口,导致GoEdge无法绑定同样的端口。所以,解决方法是关掉其他占用此端口的进程,再次重启边缘节点进程即可。
在Linux上,可以通过以下命令查看占用端口的进程:
# 80是提示占用的端口,如果提示别的端口被占用,你需要换成别的端口
netstat -anp|grep 80|grep LISTEN
可以把命令里的 80
换成你要检查的端口号。
提示 “listen tcp xxx:yyy: bind: cannot assign requested address”
这个提示说明当前系统无法绑定指定的端口,常见可能的原因是:
- 端口号超出了系统允许的端口范围;比如通常的Linux系统端口号不能超过65535;
- 你在监听地址中填写了IP地址,但是这个IP地址并没有绑定到系统网卡。
提示 “listen tcp :80: bind: permission denied”
说明你正在使用非 root
用户启动节点;如果使用非 root
用户启动,且保证此用户已经在 root 分组中,可以使用 sudo
启动,比如:
sudo bin/edge-node start
开启HTTPS后浏览器提示 ERR_SSL_VERSION_OR_CIPHER_MISMATCH
通常的几个原因:
- 没有上传对应域名的SSL证书导致,请上传证书后再试;
- 绑定的域名没有填写正确,请在”域名”设置里查看域名是否填写正确、是否有同一个域名绑定多个服务的情形。
已经上传了证书但是浏览器提示不安全
如果已经在管理系统绑定了域名,且已经上传此域名对应的证书,在浏览器上访问时仍然提示”不安全”类似字样,可能的几个原因:
- 你访问的是HTTP网址,而不是HTTPS网址,比如
http://你的域名
,此时请换成HTTPS访问,直接输入https://你的域名
来验证你的HTTPS设置是否成功;如果使用HTTPS访问成功,你只需要在网站服务设置里设置让HTTP自动跳转到HTTPS即可; - 你访问的域名没有在”域名”设置里加入;
- 你访问的域名证书不正确。
源站提示无法找到域名
如果源站提示 Invalid Hostname
之类的错误,或者提示找不到对应的网站,原因是你没有设置正确的回源主机名。默认情况下,回源主机名和终端用户访问的域名一致,但如果你的源站不支持的话,可以在”源站” – “更多设置”中修改回源主机名;如果源站使用的是特殊的端口,那么你设置的回源主机名中可能也需要添加对应的端口(比如 example.com:9200
)。
499是什么错误?
客户端在发送请求过程中取消请求的时候,会记录一个499。
如何禁止用户通过节点IP访问网站?
可以在对应集群设置 – “服务设置”中开启”禁止未绑定域名访问”,并取消”允许使用节点IP访问”选项勾选,然后保存。