我有一臺運行 docker-compose 的服務器。Docker-compose 有 2 個服務:nginx(作為反向代理)和 back(作為處理 2 個請求的 api)。此外,還有一個資料庫不在服務器上,而是單獨的(資料庫即服務)。
后端處理的請求:
- get('/api') - 后臺服務只回復“API 正在運行”給它
- get('/db') - 后臺服務向外部資料庫發送一個簡單的查詢('SELECT random() as random, current_database() as db')
請求 1 - 作業正常,請求 2 - 后臺服務崩潰,nginx 繼續作業,控制臺中出現 502 Bad Gateway 錯誤。
- nginx服務Logs出現錯誤:從上游讀取回應頭時,上游過早關閉連接。
- 后臺服務日志:連接因連接超時而終止。
這些都是相當模糊的錯誤。而且我不知道如何接近它們,因為代碼不在容器中,沒有 Nginx 和相同的資料庫,它可以正常作業。
我試過的:
- 增加內核和 RAM 的數量(現在是 2 個內核和 4 GB 的 RAM);
- 添加/洗掉/更改 proxy_read_timeout、proxy_send_timeout 和 proxy_connect_timeout 引數;
- 通過 postman 和 curl測驗www.test.com/db請求(失敗并出現相同的錯誤);
- 在沒有容器的本地機器上運行代碼,并使用相同的池和相同的 IP 撰寫并連接到相同的資料庫(一切正常,兩個請求都可以作業并發送您需要的內容);
- 更改引數worker_processes(測驗值為1和auto);
- 添加/洗掉屬性 proxy_set_header 主機 $http_host,將 $http_host 替換為“www.test.com”。
問題:我還能嘗試什么來修復錯誤并使 db 請求正常作業?
我的 nginx.conf:
worker_processes 1;
events {
worker_connections 1024;
}
http{
upstream back-stream {
server back:8080;
}
server {
listen 80;
listen [::]:80;
server_name test.com www.test.com;
location / {
root /usr/share/nginx/html;
resolver 121.0.0.11;
proxy_pass http://back-stream;
}
}
}
我的 docker-compose.yml:
version: '3.9'
services:
nginx-proxy:
image: nginx:stable-alpine
container_name: nginx-proxy
ports:
- 80:80
- 443:443
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
networks:
- network
back:
image: "mycustomimage"
container_name: back
restart: unless-stopped
ports:
- '81:8080'
networks:
- network
networks:
network:
driver: bridge
如果需要,我可以上傳其他檔案。僅考慮到代碼在容器中無法正常作業的事實,問題在于設定容器。
我將不勝感激任何幫助。
背面代碼:這里
uj5u.com熱心網友回復:
錯誤的原因是:我忘記將我的服務器的 ip 添加到資料庫集群中允許的地址串列中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/478369.html
上一篇:xls檔案大小是如何確定的?
