HipChat上传文件报未知错误解决方案
前言
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 import
location ~ /v2/import/(.*) {
client_max_body_size 1024m;
rewrite ^/v2/(.*)$ /$ break;
proxy_pass http://coral_servers;
} # all other Coral calls
client_max_body_size 1024m;
rewrite ^/v2/(.*)$ /$ break;
proxy_pass http://coral_servers;
}
4.执行重载参数文件命令:
/opt/nginx-1.4./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./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./conf/nginx.conf
3.编辑配置文件
vi /etc/nginx/nginx.conf
改动后如下:
user www-data;
worker_processes ;
daemon off; error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid; events {
worker_connections ;
} 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 ; client_max_body_size 1024m; gzip on;
gzip_http_version 1.0;
gzip_comp_level ;
gzip_proxied any;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript; proxy_buffers 16k;
proxy_buffer_size 16k; server_names_hash_bucket_size ; 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
lrwxrwxrwx root root Sep : -web -> /etc/nginx/sites-available/-web
于是查看文件/etc/nginx/sites-available/000-web。发现底部又是一个包含文件:
... ...
server {
listen 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 import
location ~ /v2/import/(.*) {
client_max_body_size 1024m;
rewrite ^/v2/(.*)$ /$ break;
proxy_pass http://coral_servers;
} # all other Coral calls
client_max_body_size 1024m;
rewrite ^/v2/(.*)$ /$ break;
proxy_pass http://coral_servers;
}
6.改完保存后,执行以下命令重新载入配置文件。
/opt/nginx-1.4./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这类工具来查找问题。
HipChat上传文件报未知错误解决方案的更多相关文章
- idea 内置tomcat jersey 跨服务器 上传文件报400错误
报错内容 com.sun.jersey.api.client.UniformInterfaceException: PUT http://.jpg returned a response status ...
- 最近上传图片上传文件报413错误及仅Https下报413问题,IIS高版本的配置方案及Web.config配置全解
IIS文件上传大小限制30M,C盘中有的IIS_schema.xml文件 C:\Windows\System32\inetsrv\config\schema\ 但是考虑到安全等问题,而且这个文件默认是 ...
- PHPStrom上传文件报502错误原因
PhpStorm是一个轻量级且便捷的PHP IDE,其自身拥有apache类似的编译器,能够在无Apache的情况下运行,很适合初学PHPStrom的朋友. 但是我发现了一个问题,那就是用PHPStr ...
- http遇到的那些坑,iis上传文件报413错误 asp.net MVC
话不多说,直接上解决方法. 修改配置文件 applicationHost.config 具体地址在C:\Windows\System32\inetsrv\config 按照下面的节点进行 添加&l ...
- idea 内置tomcat jersey 上传文件报403错误
Request processing failed; nested exception is com.sun.jersey.api.client.UniformInterfaceException: ...
- Tomcat上传文件报错:returned a response status of 403 Forbidden
出现这样的错误是没有权限对服务器进行写操作.需要在这个项目所在的tomcat中配置可写操作即可: 在tomcat的web.xml添加下面代码: <init-param><param- ...
- 解决wordpress上传文件出现http错误问题
解决wordpress上传文件出现http错误问题 问题现象 今天上传约1.4m大小的gif文件到wordpress的媒体库时失败,提示http错误. 原因 由于之前一直上传图片都是可以的,所以推测最 ...
- Linux - xshell上传文件报错乱码
xshell上传文件报错乱码,解决方法 rz -be 回车 下载sz filename
- Azkban上传文件报错installation Failed.Error chunking
azkaban 上传文件报错Caused by: java.sql.SQLException: The size of BLOB/TEXT data inserted in one transacti ...
随机推荐
- ISO/IEC 9899 C语言标准(非官方翻译)
本系列博文将以ISO/IEC 9899最新的官方手册为准,然后再添加GCC以及Clang编译器对标准的扩展. 本系列博文将不仅仅是针对C编程语言(C Programming Language)标准的翻 ...
- Ecshop文章列表页显示内容摘要
本教程中讲到的“内容摘要”指的是文章内容的前 60个字符(当然也可以是前40个,前50个等等) 下面以 2.7.2版 + 官方默认模板 为例进行讲解: 1).修改 includes/lib_artic ...
- Hadoop - 任务调度系统比较
1.概述 在Hadoop应用,随着业务指标的迭代,而使其日趋复杂化的时候,管理Hadoop的相关应用会变成一件头疼的事情,如:作业的依赖调度,任务的运行情况的监控,异常问题的排查等,这些问题会是的我们 ...
- Win7 64位 Visio反向工程(MySQL)
1 看Office的版本,我安装的是32位的版本,故要去MySQL的官网下载对应32位的ODBC驱动: http://dev.mysql.com/downloads/connector/odbc/ 2 ...
- js-2
var myarray= new Array(); var myarray= new Array(8); var myarray= new Array(66,80,60,59,70); var mya ...
- jQuery的ajax 方法提交多个对象数组问题 C# traditional $.param
当用$.ajax()向后台提交参数时,如果参数中数组的话一般在后台会用List<T>接收;但老是不成功如下面代码 "}]; "}]; function addUser( ...
- Newtonsoft 自定义输出内容
高级用法 1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称 7.动态决定属性是否序列化 8.枚举值的自定义格式化问题 9.自定义类型转换 ...
- Firefox火狐添加书签功能失灵解决办法
一直使用firefox,书签管理用的是插件Tabmix.感觉很好,只是不知道从那天起添加书签就不灵了!不论是Ctrl+D快捷键,还是Add Bookmark Here2插件,甚至“将此页加为书签”的菜 ...
- 在多线程环境中使用CoreData
在多线程环境中使用CoreData BY 子非鱼 · 2014 年 10 月 13 日 上回书说道,其实CoreData学起来也没有很复杂,我们其实增删改查都和别的ORM大同小异.但是世界总是很复 ...
- 彻底删除mysql方法
首先,先在服务(开始——>控制面板——>管理工具——>服务)里停掉MySQL的服务.打开控制面板-添加删除程序,找到MySQL,卸载.或者用360安全卫士来卸载也行.也可以用mysq ...