前言

HipChat是Atlassian公司的一款团队协作即时通讯工具,服务端为Linux(官方给的服务端就是一个虚拟机),在Windows、Linux、Android、IOS、Mac等平台都有客户端软件,还可以直接在PC的Web上直接聊天,对于团队协作交流需求整理的比较到位,最主要的是HipChat可以和Confluence对接讨论主题(不是有Confluence的需求个人觉得不如其他一些团队通讯软件)。

前些天接下了配置HipChat服务端的任务,但是使用了几天后发现,聊天时发送超过10M的文件就会报错:

嗯,而且给了个明显是废话的报错提示:在上传文件的时候出错了。

而官方文档上写的限制是50M。所以这里肯定是有问题的。

这里先给出最终解决方法:

1.登录linux,使用下面命令取得root权限

sudo /bin/dont-blame-hipchat

2.编辑配置文件:

vi /etc/nginx/includes/web-site

3.在大概120行的位置找到如下代码片段,添加并修改client_max_body_size 1024m;(原来是10M)

# Coral requests
location /v2 {# Allow larger requests for importlocation ~ /v2/import/(.*) {client_max_body_size 1024m;rewrite ^/v2/(.*)$ /$1 break;proxy_pass http://coral_servers;
  }# all other Coral callsclient_max_body_size 1024m;rewrite ^/v2/(.*)$ /$1 break;proxy_pass http://coral_servers;
}

4.执行重载参数文件命令:

/opt/nginx-1.4.2/sbin/nginx -s reload

如果修改完成后还不行可以试着修改该文件内其他client_max_body_size参数。

如果不行那么可能是官方版本变动导致某些文件位置变动,可以参考我后面解决问题的过程。

下面说明下我解决问题的思路。

1.确定Web服务器类型

上传文件的问题是在Windows桌面版本的Hipchat上发现的,不过因为与浏览器访问的效果一致,我猜测后面一定是一个Web服务器,于是乎打开浏览器试着在聊天界面发送文件,果然是同样的报错,不过不同的是,我可以用现代浏览器的调试工具查看下请求的报错内容,于是看到:

点进去看到:

看到了nginx,没接触过nginx,不过现在网络资料一大把,很容易就可以找到其相关资料。

(注:我这里使用的是Chrome的开发者工具)

2.查找并修改配置文件

网上很容易可以搜到nginx是代理,其配置文件中的client_max_body_size字段表明了最大上传大小。故现在登录服务器

1.登录linux,使用下面命令取得root权限

sudo /bin/dont-blame-hipchat

2.用命令查找nginx的配置文件:

find / -name 'nginx.conf'

结果如下:

/opt/atlassian/hipchat/dependencies/source/nginx-1.4.2/conf/nginx.conf
/hipchat-scm/web/application/vendor/Elastica/test/nginx/nginx.conf
/etc/nginx/conf.d/nginx.conf
/etc/nginx/nginx.conf
/usr/local/src/nginx-1.4.2/conf/nginx.conf

3.编辑配置文件

vi /etc/nginx/nginx.conf

改动后如下:

user www-data;
worker_processes  4;
daemon off;error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;events {worker_connections 2048;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format custom '$remote_addr - $remote_user [$time_local]  ''"$request" $status $body_bytes_sent ''"$http_referer" "$http_user_agent" ''"$http_x_forwarded_for" $http_x_forwarded_proto';access_log /var/log/nginx/access.log custom;server_tokens off;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;client_max_body_size 1024m;gzip  on;gzip_http_version 1.0;gzip_comp_level 2;gzip_proxied any;gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;proxy_buffers 8 16k;proxy_buffer_size 16k;server_names_hash_bucket_size 64;include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*;
}

4.执行重载参数文件命令:

/opt/nginx-1.4.2/sbin/nginx -s reload

发现并没有解决问题,重启Linux虚拟机,仍然没有解决问题,且重启后发现该配置文件里client_max_body_size又被改回10m了。于是后来又从怎么样重启后使得该配置文件不重置参数着手,实际证明这条思路是错误的。

该配置文件最下面有两个include语句,/etc/nginx/conf.d/目录为空,于是进入/etc/nginx/sites-enabled目录。发现里面有个链接文件

root@hipchat:/etc/nginx/sites-enabled# cd /etc/nginx/sites-enabled/
root@hipchat:/etc/nginx/sites-enabled# ls -l
total 0
lrwxrwxrwx 1 root root 34 Sep 17 01:19 000-web -> /etc/nginx/sites-available/000-web

于是查看文件/etc/nginx/sites-available/000-web。发现底部又是一个包含文件:

... ...
server {listen 80 default_server;more_clear_input_headers 'X-HIPCHAT-GROUP';more_clear_input_headers 'X-HIPCHAT-USER';add_header Strict-Transport-Security "max-age=31536000";more_clear_input_headers 'X-HIPCHAT-REQUEST';more_set_input_headers 'X-HIPCHAT-REQUEST: public';include includes/web-site;
}

于是再找includes/web-site:

root@hipchat:/etc/nginx/sites-enabled# find / -name 'web-site'
/etc/nginx/includes/web-site

5.打开该web-site文件,查找其中的client_max_body_size,最终发现120行附件location /v2中增加client_max_body_size配置项有效。

# Coral requests
location /v2 {# Allow larger requests for importlocation ~ /v2/import/(.*) {client_max_body_size 1024m;rewrite ^/v2/(.*)$ /$1 break;proxy_pass http://coral_servers;
  }# all other Coral callsclient_max_body_size 1024m;rewrite ^/v2/(.*)$ /$1 break;proxy_pass http://coral_servers;
}

6.改完保存后,执行以下命令重新载入配置文件。

/opt/nginx-1.4.2/sbin/nginx -s reload

(注:nginx路径可能会有变动,如无法执行请查找其他nginx目录)。

3.总结

这样改过以后,Hipchat即可以上传50M以上文件了,当然50M也不大,但是这是官方限制,估计只有向官方反馈或者付费才能解决这个问题。

其实在使用Hipchat的时候我有点搞不清楚Hipchat在Atlassian公司的地位,因为有许多问题。除了这次遇到的,还有自带的Windows、Linux、Mac、IOS、Android等平台的客户端版本都比较老,Windows端的无法发图和文件,Android直接就连不上,最终是直接从官网下载最新的客户端包才解决问题,其他平台没有试过。(Android版本需要到Google Play商店安装)。

Hipchat算是一个小众软件,所以估计也没什么人会遇到这问题。本文除了记录该问题外,算是提供一种解决问题的思路。遇到这种网络连接类的问题,且服务端和客户端都不能看源代码的,就可以类似这样解决。即使服务器不是HTTP服务器,也可以使用wireshark这类工具来查找问题。

转载于:https://www.cnblogs.com/yaoh/p/5160464.html

HipChat上传文件报未知错误解决方案相关推荐

  1. php图片上传报502,PHPStrom上传文件报502错误原因,_PHP教程

    PHPStrom上传文件报502错误原因, PhpStorm是一个轻量级且便捷的PHP IDE,其自身拥有apache类似的编译器,能够在无Apache的情况下运行,很适合初学PHPStrom的朋友. ...

  2. php上传文件502,PHPStrom上传文件报502错误原因

    « PHPStrom上传文件报502错误原因» PhpStorm是一个轻量级且便捷的PHP IDE,其自身拥有apache类似的编译器,能够在无Apache的情况下运行,很适合初学PHPStrom的朋 ...

  3. php上传文件 报的错误 $_FILES[‘file’]['error']

    大家都知道,php上传文件后台报的错误$_FILES['file']['error'] 前台php程序为 <form id ="formFileUpload" name=&q ...

  4. 文件不能超过200k_zblog上传文件出现未知错误 大小不能超过200k【解决】

    今天发布文章时,在上传图片的时候出现了一个错误,错误信息是"错误原因:未知错误". zblog上传文件失败 一开始我以为是图片格式不对,仔细看了之后,确实是jpg文件,一向都没有问 ...

  5. 使用post上传文件报500错误

    功能是上传文件最多上传3个,使用post上传1个文件没问题,2个也没问题,3个就有问题了. 找了很久才发现代码没问题,是post请求超过长度限制了. 理论上post长度是没有限制的,起限制作用的是服务 ...

  6. ajax提交file空指针,excel导入上传文件报空指针错误

    页面入口 全选 导入 导出 ${msg['globals.button.delete.more']} 导出js function excelImport() { top.layer.open({ ty ...

  7. Jenkins使用FTP上传文件报错问题处理

    Jenkins带有Publish over FTP插件,安装后并使用它就能实现FTP上传,可以用于构建后的发包操作.我们在系统管理中配置好FTP Servers后,并测试连接通过,按理在Job配置中用 ...

  8. springcloud上传文件报错

    Spring Cloud上传文件报如下错误: The temporary upload location [/tmp/tomcat.5260880110861696164.8090/work/Tomc ...

  9. Spring MVC实现上传文件报错解决方案

    Spring MVC实现上传文件报错解决方案 参考文章: (1)Spring MVC实现上传文件报错解决方案 (2)https://www.cnblogs.com/liuling/p/2014-3-5 ...

最新文章

  1. Codeforces Round #469 (Div. 2) A/B
  2. ggplot2画图教程
  3. ibatis中如何调用出参为游标的存储过程
  4. 世界首例针对特斯拉自动驾驶判罚:德国裁定Autopilot广告误导买家,特斯拉柏林工厂可能受阻...
  5. (转载)MyEclipse github
  6. 3.vector实现字符串类
  7. Android编译笔记一
  8. 【编程珠玑】第七章 粗略估算
  9. GridView表头排序方法设置
  10. ORACEL使用脚本来修改表结构
  11. 【龙讯module小课堂】“光”怪陆离:PWmat计算光学性质(一)
  12. 遍历Map集合的四种方式
  13. 第一章 WEB应用程序开发流程
  14. mysql导入数据dmp文件怎么打开_如何在oracle中导入dmp数据库文件
  15. 程序员未来前景怎么样
  16. 华为手机怎么使用新系统鸿蒙,华为手机鸿蒙系统如何退回EMU
  17. 网络 计算机 访问权限,电脑无网络访问权限如何解决
  18. 远程服务RMI源码解析(二)
  19. 测序深度和覆盖度(Sequencing depth and coverage)
  20. win10设备管理没有android,win10电脑不能识别安卓设备怎么解决?

热门文章

  1. 为什么Android要采用Binder作为IPC机制?
  2. JZOJ 5400. 【NOIP2017提高A组模拟10.7】Repulsed
  3. spring-mybatis.xml 访问html5,Spring mvc无xml配置及利用JdbcTemplate访问数据库
  4. vue 心跳监控_vue websocket 加心跳
  5. linux重定向文件不存在,shell 12 21 filename重定向的含义和区别
  6. 洗衣机,数据挖掘的物理模型
  7. Vijos 1197 - 费解的开关
  8. 链接h5代码_H5域名被微信拦截的原因及解决方案?
  9. jquery清空div内容_一键清空微博
  10. 20211205 Nussbaum函数实例