我使用 nginx 将 https 请求代理到我的应用服务器(当前在 8443 上运行)。
此应用服务器提供动态页面,其中一些页面包括经过最小化的 jquery。
页面出现错误,因为 jquery 似乎被截断了……是否存在文件大小限制之类的问题?
我的 nginx 配置如下:
server {
listen 443;
server_name my_serv.com;
ssl on;
ssl_certificate certificate.pem;
ssl_certificate_key privatekey.pem;
keepalive_timeout 70;
location / {
proxy_pass https://localhost:8443;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_buffering off;
proxy_buffers 8 8k;
}
}
答案1
我知道这个问题已经非常老了,但我刚刚遇到了同样的问题。确保运行 nginx 的用户对 proxy_temp 目录具有写入权限。如果您通过代理服务器提供更大的响应,而这些响应无法全部保存在 proxy_buffers 中,则其余响应数据将写入磁盘中的 proxy_temp 目录。如果由于权限不足(或其他原因,例如磁盘空间)而无法写入,则响应将被截断。
判断这个问题的一个简单方法是清除浏览器缓存,然后打开 Chrome 开发者工具重新加载页面。在网络选项卡中找到截断的文件,如果大小与代理缓冲区大小匹配(在您的情况下为 64k),则 nginx 可能在写入磁盘时遇到问题。
有关 nginx proxy_temp_path 的更多信息:http://wiki.nginx.org/HttpProxyModule#proxy_temp_path
答案2
如果在访问日志中看到截断文件的返回代码为 304(未修改),请尝试清除浏览器的缓存。不幸的是,我找不到从 nginx 配置中“修复”此问题的方法。
答案3
有,但是默认是1G:
http://wiki.nginx.org/HttpProxyModule#proxy_max_temp_file_size
就像@kolbyjack 所说的那样,error.log 中可能有错误需要查看。