máy chủ:
Tôi sử dụng Nginx làm proxy xâm nhập cho máy chủ của mình. Nginx chạy trong một Docker container.
docker-compose.yml:
nginx_ingress:
hình ảnh: nginx: mới nhất
cổng:
- "80:80"
- "443:443"
mạng:
tầng trước: {}
tầng sau:
ipv4_address: 172.28.1.1
khởi động lại: luôn luôn
khối lượng:
- /var/lib/my-server/config/nginx_ingress:/etc/nginx/conf.d
- /var/lib/my-server/data/certbot/conf:/etc/letsencrypt
- /var/lib/my-server/data/certbot/www:/var/www/certbot
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
Vì tôi quản lý nhiều chứng chỉ với một vùng chứa khác, nên tôi muốn Nginx tải lại cấu hình một cách duyên dáng sau mỗi 6 giờ.
Ý tưởng là tôi có thể quản lý độc lập tất cả các chứng chỉ của mình với một vùng chứa khác. Tôi không muốn có bất cứ thứ gì chạy trên máy chủ của mình (không có cronjob) và tôi không muốn kết hợp bộ chứa nginx-proxy của mình với bộ chứa chứng chỉ của mình. Tôi muốn mọi mảnh ghép hoạt động độc lập.
(Tôi có ý tưởng từ hướng dẫn này: https://pentacent.medium.com/nginx-and-lets-encrypt-with-docker-in-less-than-5-minutes-b4b8a60d3a71)
Vấn đề:
Đôi khi proxy (nginx) ngừng hoạt động. Trong khi bộ chứa Docker vẫn tiếp tục chạy.
Nhật ký hiển thị như sau:
...
25/10/2021 05:51:42 [thông báo] 1
25/10/2021 05:51:42 [thông báo] 12
25/10/2021 05:51:42 [thông báo] 12
25/10/2021 05:51:42 [thông báo] 13
25/10/2021 05:51:42 [thông báo] 12
25/10/2021 05:51:42 [thông báo] 13
25/10/2021 05:51:42 [thông báo] 13
25/10/2021 05:51:42 [thông báo] 1
25/10/2021 05:51:42 [thông báo] 1
25/10/2021 05:51:42 [thông báo] 1
25/10/2021 05:51:42 [thông báo] 1
25/10/2021 05:51:44 [thông báo] 1
25/10/2021 05:51:44 [thông báo] 1
25/10/2021 05:51:44 [thông báo] 1
25/10/2021 05:51:44 [thông báo] 1
25/10/2021 05:51:44 [thông báo] 1
25/10/2021 05:51:44 [thông báo] 1
25/10/2021 05:51:44 [thông báo] 1
25/10/2021 05:51:44 [thông báo] 1
Với thỉnh thoảng Ý tôi là đôi khi. Tôi không thể tạo ra bất kỳ mô hình nào cho đến nay. Đầu tiên tôi nghĩ Nginx sẽ tắt cứ sau 6 giờ vì chỉ huy
. Nhưng có vẻ như đây không phải là trường hợp. Tôi đã giảm thời gian ngủ xuống còn 2 phút và Nginx vẫn chạy tốt trong nhiều giờ. Sau đó, tôi đặt lại thời gian ngủ thành 6 giờ và đúng 6 giờ sau Nginx ngừng hoạt động (xem nhật ký ở trên). Tôi đã khởi động lại bộ chứa Docker và kể từ đó Nginx đang chạy (hơn 24 giờ đã trôi qua). Như bạn có thể thấy trong nhật ký sau, trong hầu hết các trường hợp, quá trình tải lại Nginx hoạt động hoàn toàn tốt:
...
25/10/2021 11:51:44 [thông báo] 19
25/10/2021 11:51:44 [thông báo] 1
25/10/2021 11:51:44 [thông báo] 1
25/10/2021 11:51:44 [thông báo] 1
25/10/2021 11:51:44 [thông báo] 1
25/10/2021 11:51:44 [thông báo] 1
25/10/2021 11:51:44 [thông báo] 1
25/10/2021 11:51:44 [thông báo] 10
25/10/2021 11:51:44 [thông báo] 9
25/10/2021 11:51:44 [thông báo] 10
25/10/2021 11:51:44 [thông báo] 9
25/10/2021 11:51:44 [thông báo] 9
25/10/2021 11:51:44 [thông báo] 10
25/10/2021 11:51:44 [thông báo] 1
25/10/2021 11:51:44 [thông báo] 1
25/10/2021 11:51:44 [thông báo] 1
25/10/2021 11:51:44 [thông báo] 1
...
...
25/10/2021 17:51:44 [thông báo] 23
25/10/2021 17:51:44 [thông báo] 1
25/10/2021 17:51:44 [thông báo] 1
25/10/2021 17:51:44 [thông báo] 1
25/10/2021 17:51:44 [thông báo] 1
25/10/2021 17:51:44 [thông báo] 1
25/10/2021 17:51:44 [thông báo] 1
25/10/2021 17:51:44 [thông báo] 22
25/10/2021 17:51:44 [thông báo] 21
25/10/2021 17:51:44 [thông báo] 21
25/10/2021 17:51:44 [thông báo] 22
25/10/2021 17:51:44 [thông báo] 21
25/10/2021 17:51:44 [thông báo] 22
25/10/2021 17:51:44 [thông báo] 1
25/10/2021 17:51:44 [thông báo] 1
25/10/2021 17:51:44 [thông báo] 1
25/10/2021 17:51:44 [thông báo] 1
25/10/2021 17:51:44 [thông báo] 1
25/10/2021 17:51:44 [thông báo] 1
...
Những câu hỏi của tôi:
- Có gì sai với
chỉ huy
Tôi sử dụng? Vùng chứa có nên dừng ngay khi Nginx dừng không? (có thể đã xảy ra sự cố với quy trình chính?)
- Tại sao Nginx chỉ dừng bất thường? Tại sao không phải 6 giờ một lần? Bạn có thấy sự khác biệt nào giữa nhật ký đầu tiên và nhật ký thứ hai/thứ ba không?
- Bạn có bất kỳ đề xuất nào khác về cách tôi có thể khiến Nginx tự tải lại không? (như đã đề cập ở trên, tôi không muốn bất cứ thứ gì trên máy chủ + Tôi không muốn kết hợp các thùng chứa nginx và certbot nếu không thực sự cần thiết ...)
Cảm ơn sự giúp đỡ của bạn!