Почему со временем перестаёт работать nginx proxy_pass до всех jails в FreeBSD 12?
Всем привет.
Кто имеет опыт с FreeBSD + Jails , подскажите пожалуёста, почему со временем (обычно менее суток) все веб-сервисы в jails'ах становятся недоступными?
Описание:
Есть домашний сервер на FreeBSD 12. Мощностей достаточно.
Карта сети:
Роутер == редирект80 == Сервер == fw редирект80 == jail1 nginx reverse-proxy == proxy_pass на остальные jails зависимо от запрашиваемого домена.
На сервере развернуто несколько jails с nginx (reverse proxy) и несколькими веб-сервисами (transmission, личный сайт, _h5ai файлменеджер и emby (фильмотека). Каждый со своим nginx внутри.
Со временем, перестают быть доступными все jails именно на 80 порту. Тоесть глохнут nginx, на которые сделан proxy_pass. По IP всё везде пингуется.
Подскажите пожалуйста
- правильные конфиги для редиректов (может я где-то забыл или указал неверные лимиты\таймауты и тупо кончаются соединения у fastcgi?
- где можно посмотреть почему пакеты не уходят запросившему (может где-то кривой конфиг и пакеты начинают крутится в сети и ложат её)
- я даже не знаю что ещё вам сообщить. пишите что надо предоставить (логи, конфиги, явки, пароли)... нужны опытные экстрасенсы.
UPD:
1. Рестарт nginx клетки-сервиса не помогает.
2. Рестарт nginx клетки reverse-proxy - помогает.
3. Вручную рестартануть reverse-proxy в клетке не могу т.к пишет ошибку
nginx:/root@[16:44] # service nginx restart
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: [emerg] bind() to 0.0.0.0:443 failed (49: Can't assign requested address)
nginx: configuration file /usr/local/etc/nginx/nginx.conf test failed
Хотя конфиг правильный и при рестарте всего jail всё работает:
Stoping jail: nginx, parallel timeout=5
jstop done in 6 seconds
set resource limit: [ ]
jail renice: 1
Starting jail: nginx, parallel timeout=5
nginx: created
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib
32-bit compatibility ldconfig path: /usr/lib32
Setting hostname: nginx.thouse.chifty.top.
Creating and/or trimming log files.
Starting syslogd.
Clearing /tmp (X related).
Updating motd:.
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Starting nginx.
Starting sendmail_submit.
Starting sendmail_msp_queue.
Starting cron.
Sun May 10 16:46:31 EEST 2020
jstart done in 4 seconds
jrestart done in 10 seconds
jrestart done in 10 seconds
Вот мой nginx.conf на reverse-proxy:
nginx:/root@[16:51] # cat /usr/local/etc/nginx/nginx.conf
user www;
worker_processes 1;
error_log /var/log/nginx/error.log info;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 65;
server {
server_name emby.chifty.top;
location / {
proxy_pass http://10.0.0.6:8096;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /usr/local/etc/letsencrypt/live/emby.chifty.top/fullchain.pem; # managed by Certbot
ssl_certificate_key /usr/local/etc/letsencrypt/live/emby.chifty.top/privkey.pem; # managed by Certbot
include /usr/local/etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
server_name mysql.chifty.top;
location / {
proxy_pass http://10.0.0.3;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /usr/local/etc/letsencrypt/live/mysql.chifty.top/fullchain.pem; # managed by Certbot
ssl_certificate_key /usr/local/etc/letsencrypt/live/mysql.chifty.top/privkey.pem; # managed by Certbot
include /usr/local/etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
server_name file.chifty.top;
location / {
proxy_http_version 1.1;
proxy_temp_file_write_size 64k;
proxy_connect_timeout 10080s;
proxy_send_timeout 10080;
proxy_read_timeout 10080;
proxy_buffer_size 64k;
proxy_buffers 16 32k;
proxy_busy_buffers_size 64k;
proxy_redirect off;
proxy_request_buffering off;
proxy_buffering off;
proxy_pass http://10.0.0.4;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /usr/local/etc/letsencrypt/live/file.chifty.top/fullchain.pem; # managed by Certbot
ssl_certificate_key /usr/local/etc/letsencrypt/live/file.chifty.top/privkey.pem; # managed by Certbot
include /usr/local/etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
server_name torrent.chifty.top;
location / {
proxy_pass http://10.0.0.1:9091;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /usr/local/etc/letsencrypt/live/torrent.chifty.top/fullchain.pem; # managed by Certbot
ssl_certificate_key /usr/local/etc/letsencrypt/live/torrent.chifty.top/privkey.pem; # managed by Certbot
include /usr/local/etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
server_name chifty.top;
root /usr/local/www/chifty;
index index.php index.html index.htm;
location / {
proxy_pass http://10.0.0.5;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /usr/local/etc/letsencrypt/live/chifty.top-0001/fullchain.pem; # managed by Certbot
ssl_certificate_key /usr/local/etc/letsencrypt/live/chifty.top-0001/privkey.pem; # managed by Certbot
include /usr/local/etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = chifty.top) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name chifty.top;
return 404; # managed by Certbot
}
server {
if ($host = file.chifty.top) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name file.chifty.top;
return 404; # managed by Certbot
}
server {
if ($host = mysql.chifty.top) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name mysql.chifty.top;
return 404; # managed by Certbot
}
server {
if ($host = torrent.chifty.top) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name torrent.chifty.top;
return 404; # managed by Certbot
}
server {
if ($host = emby.chifty.top) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name emby.chifty.top;
listen 80;
return 404; # managed by Certbot
}}
nginx:/root@[16:51] #