Nginx的使用过程,出现了各种问题,在这里主要是记录下来,然后方便以后查看,在这里再总结在一起,稍微会条理清晰点,以后遇到什么与Nginx响应的问题都会在这里记录下来。
- 问题1:Nginx监听的是8080端口,为什么会出现浏览器请求之后URL获取的端口一直都是80?
答:这是因为你的location配置中对请求头的设置是proxy_set_header Host $host
,这种配置是默认80端口的,当你的监听端口不是80时,就会出现这种问题。可以修改为proxy_set_header Host $host:$server_port
或者不配置则会默认就是proxy_set_header Host $host:$server_port
.
- 问题2:莫名其妙报了500的错误码,但是Tomcat的正常,这是什么原因?
答:通过yum安装的方式一般日志在/var/log/nginx/error.log
里,查看日志可以看到,因为请求数据无法写入到临时文件中,磁盘满了,因为Nginx每一个请求的数据都会先写入的temporary file里,故会出现500的错误,此时可以通过df -h
查看磁盘的信息发现,磁盘已经100%,解决方法就是删除部分没有用的文件。
- 问题3: 部分用户在首页尝试登陆,出现页面渲染不完整,甚至是空白?
答:在IE下Debug发现,部分JS文件未加载完整,导致渲染不完整甚至是空白的问题,主要是Nginx代理之后会有相应的代理缓存区,缓存区默认只有几十KB,某些版本的nginx默认设置中没有相关处理,导致部分文件代理是会出现加载不全的现象,其实不仅仅是JS文件。只是因为框架的JS文件略大,所以经常出现类似问题,导致Nginx响应到客户端的js文件出现了缺失的问题。
解决方法:
在nginx.conf的http{}段添加下面的配置,调大代理缓存区:
#调大buffer,解决js加载不完整问题
proxy_buffer_size 256k;#缓存大小
proxy_buffers 32 256k;#32个258k的代理缓存区
proxy_busy_buffers_size 256k;
-
问题4: 出现上传文件报413错误码。
答:原因是Nignx的默认请求体的大小只有1M,当文件超过这个大小时,上传会出现413错误,比较坑。解决方法:修改Nginx的配置文件
nginx.conf
,在 http{} 段中添加增大请求体的配置:
client_max_body_size 50m;#设置允许请求体的大小,具体的大小是具体情况为准
client_body_buffer_size 512k;
-
问题8: 并发测试出现Gatway 504错误
答:https://stackoverflow.com/questions/7348935/timeout-when-uploading-a-large-file ,调大代理读取的时间,因为读取文件,容易耗时比较久。
解决方法:在
nginx.conf
的http{}段添加下面的配置proxy_read_timeout 1200;
关于这个timeout的配置可以参考另外一篇文章:https://blog.csdn.net/strive_or_die/article/details/100061122