Nginx常見報錯及解決方案

1. 概述

本文匯總使用 Nginx 程式中常見報錯及解決方案。

2. 範例

2.1 Cannot read property 'length' of undefined

問題描述:

當使用者不想要曝光自身伺服器的地址時,通常會使用 Nginx 反向代理伺服器,使用程式中出現請求報錯,如下圖所示:

1724123665192941.png

原因分析:

該問題是由於 FineBI 預設請求埠號為 48888(單機)或者 48889(叢集),若 Nginx 中配置的埠號不為該埠,則無法將資訊轉發到正確的請求埠上,因此需要在 FineBI 中將資訊請求埠修改為與 nginx 中配置的一致。

解決方案:

1)連結 FineDB 資料庫,在資料庫表 fine_conf_entity 加一下欄位(或者改一下)WebSocketConfig.requestPort,將其修改為與 Nginx 中配置的埠一致即可。比如 Nginx 中的埠配置為 8089 ,則我們可修改WebSocketConfig.requestPort為 8089 ,如下圖所示:

1724123895698181.png

2)修改完成後重啟 FineBI 即可。

2.2 permission denied

問題描述:

叢集環境,有線網路正常,無線網路登入頁面空白,但是節點可以正常登入。

日誌檔案如下圖所示:

1724123943444363.png

原因分析:

Nginx 無權限讀取資料流。

解決方案:

修改 nginx.conf ,將使用者組改成 root ,並且取消註釋。如下圖所示:

1724124222805570.png

2.3 https protocol requires SSL

問題描述:

啟動時報錯:

nginx:[emerg]https protocol requires SSL support in /usr/nginx/conf/nginx.conf:39

原因分析:

nginx.conf 中配置了 HTTPS,但 Nginx 未配置 SSL 模組。

解決方案:

給 Nginx 增加 SSL 模組,請參見 Tomcat配置SSL證件實現HTTPS存取

2.4 Nginx 編譯缺乏依賴

問題描述:

報錯:SSL modules require the OpenSSL library

如下圖所示:

1724124329415167.png

原因分析:

Nginx 在編譯一些模組時,需要三個依賴庫:PCRE、zlib、OpenSSL

解決方案:

yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

2.5 Nginx 入口存取平台空白

問題描述:

Nginx 入口存取平台空白,日誌顯示寫快取檔案失敗,如下圖所示:

1724124374727990.png

解決方案:

如果啟動 Nginx 的使用者有對應目錄讀寫權限,則可能是磁碟空間不足引起,可用df -h指令查看。

nginx.conf 中關閉 acces.log ,避免日誌過大,把磁碟空間佔完。

2.6 叢集環境/伺服器經常出現卡慢

問題描述:

叢集環境,伺服器經常出現卡慢。

解決方案:

由於磁碟空間不足,nginx.conf 中關閉 acces.log ,避免日誌過大,把磁碟空間佔完。

2.7 Nginx 配置外網後埠丟失

問題描述:

使用者做了 Web 叢集,現在做了外網映射,存取 URL 能登入到登入頁面,但是點選登入之後,映射的埠號不見了,跳轉之後就直接報 404 。

原因分析:

登入跳轉後,host 變動,導致埠丟失。

解決方案:

Nginx 修改 head 的 host 欄位(proxy_set_header Host)為實際外部存取的地址,如下圖所示:

1724124415867787.png

2.8 Nginx 配置無法存取 CSS 和 JS 等靜態資源

問題描述:

存取類似localhost:8080\WebReport\ReportServer,頁面空白,控制台報錯:Failed to load resource:the server responded with a status of 404(not Found)

1603098254688826.png

原因分析:

Nginx入口:http://localhost/reportService/WebReport/decision

Tomcat:http://ip:port/WebReport/decision

使用者在 Nginx 在匹配 /reportService 轉發給後端 Tomcat 處理,而後端傳回資源請求時不帶 /reportService,導致重定向到了 Nginx 靜態資源路徑,存取報錯。

Nginx 配置:

1603098476510572.png

1603098499874729.png

解決方案:

方案一:Nginx 層面

攔截/WebReport/decision,重定向為/reportService/WebReport/decision

需要注意以下兩點:

  • rewrite 是 301 重定向,return 是 307 重定向。

  • server_name 為 localhost 時,透過 127.0.0.1 存取,重定向後會有跨域報錯,ajax error。

1603098808366757.png

方案二:Tomcat 層面

設定虛擬目錄,使得 Tomcat url 變為:http://ip:port/reportService/WebReport/decision

具體步驟

(1)將工程移出 webapp,避免重複載入;

(2)修改tomcat conf/server.xml,docbase 為工程絕對路徑

1603098892266817.png

(3)修改 nginx.conf,去掉斜槓

注:帶斜槓時,是將/reportService/後面的請求轉發給後面。

1603098926998692.png

2.9 413 (Request Entity Too Large)

問題描述:

部署了叢集,使用 Nginx 進行負載均衡。擁有匯出權限的使用者全局匯出 Excel/Pdf 時提示匯出無權限,匯出失敗。透過 F12 查看前端報錯,發現報錯:413 (Request Entity Too Large) 。如下圖所示:

1724124943800317.png

原因分析:

Nginx 中設定了預設檔案大小限制,若上傳的檔案超多這個預設設定的大小,就會被 Nginx 限制而無法上傳。

解決方案:

修改 Nginx 中檔案大小限制。

1)開啟 Nginx 配置檔案 nginx.conf,路徑一般是:%nginx%/nginx.conf

2)修改該檔案中的 client_max_body_size 對應值,該值對應 Nginx 允許最大上傳的大小,如下圖所示:

1724125026333059.png

注:這個參數的作用為設定最大允許的用戶端請求主體大小,該值大小具體多少根據業務需求調整。

3)儲存後重啟 Nginx ,問題解決。

附件列表


主题: 部署整合
  • 有帮助
  • 没帮助
  • 只是浏览
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙