解決nginx配置不當導致接口請求數據被截斷的問題


問題

最近請求一些接口,發現瀏覽器端拿到的JSON返回數據被截斷,前端無法解析。

分析

Java后端沒有報錯,一般就是反向代理的問題,Nginx配置有很大的嫌疑。

  1. 檢查nginx的error_log,發現確實nginx報錯:
2020/07/28 14:13:49 [crit] 113301#0: *45739 open() "/opt/work/nginx/proxy_temp/6/10/0000000106" failed (13: Permission denied) while reading upstream, client: x.x.x.y, server: x.x.x.x, request: "GET /api/some/address?startTime=1595312026524&endTime=1595916826524&timeUnit=5 HTTP/1.0", upstream: "http://x.x.x.x:8500/api/some/address?startTime=1595312026524&endTime=1595916826524&timeUnit=5", host: "api.slankka-inc.com", referrer: "http://api.slankka-inc.com/api/some/view"

查看目錄權限發現:
/opt/work/nginx

drwxrwxr-x 11 hue    hue 4.0K Oct 31  2019 .
drwxrwxr-x 15 hue    hue 4.0K Aug  2  2019 ..
drwx------  2 nobody hue 4.0K Mar 21  2019 client_body_temp
drwxrwxr-x  2 hue    hue 4.0K Jun 17 09:56 conf
drwx------  2 nobody hue 4.0K Feb 19  2019 fastcgi_temp
drwxr-xr-x  2 hue    hue 4.0K Feb 19  2019 html
drwxrwxr-x  2 hue    hue 4.0K Feb 19  2019 logs
-rw-r--r--  1 hue    hue    6 Feb 19  2019 nginx.pid
drwx------ 12 nobody hue 4.0K Feb 20  2019 proxy_temp
drwxrwxr-x  2 hue    hue 4.0K Feb 19  2019 sbin
drwx------  2 nobody hue 4.0K Feb 19  2019 scgi_temp
drwx------  2 nobody hue 4.0K Feb 19  2019 uwsgi_temp

proxy_temp目錄的owner是 nobody,啟動進程的用戶為hue。

  1. 這類問題應該比較常見,需要網上搜索查找原因
    這里選取四篇文章
    Nginx返回大長度的JSON數據被截斷 這篇是解決思路
    返回值過長時被nginx截斷的解決辦法 這篇是Nginx沒有權限的具體原因
    nginx進程屬主問題討論 這篇是用戶為nobody現象的分析
    nginx的proxy_temp目錄權限為nobody nginx -t操作 這篇是根本原因

解決

  1. 將目錄屬主全部改為 hue。 執行:chown -R hue:hue /opt/work/nginx
  2. root用戶下,慎用nginx -t


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM