Nginx
Загрузка файлов с помощью curl и nginx
Можно использовать DAV для PUT запросов, это то что уже есть в nginx.
Указываем location
по которому будем загружать файлы.
location /upload {
alias upload/data; #куда грузим
client_body_temp_path upload/client_tmp;
dav_methods PUT DELETE MKCOL COPY MOVE;
create_full_put_path on;
dav_access group:rw all:r;
}
Не забываем установить размер файлов
client_max_body_size 10000m;
Загружаем с помощью curl
curl -T ubuntu-10.04.4-alternate-amd64.iso http://localhost/upload/blah2
Полная конфигцрация, curl загружаем и сразу же можно кому-то отдать файл:
server {
listen 80;
server_name _ vm.dev.ru;
client_max_body_size 500m;
root /static;
index index.html;
location /sharedfiles/ {
autoindex on;
autoindex_format html;
autoindex_localtime on;
}
location ~ "/upload/([0-9a-zA-Z-.]*)$" {
alias sharedfiles/$1;
client_body_temp_path /tmp/upl_tmp;
dav_methods PUT DELETE MKCOL COPY MOVE;
create_full_put_path on;
dav_access group:rw all:r;
}
}
Certbot
Настройка certbot в ручном режиме
certbot certonly --standalone -n --agree-tos --email ПОЧТА -d CАЙТ.РФ -d www.САЙТ.РФ
создадим ссылку для docker-compose если основной nginx работает в докере
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Создаем исполняемый файл в папке /root со след командами:
#!/bin/bash
date
echo -e "stoping nginx service"
systemctl stop nginx
echo -e "renewing certs"
certbot renew
echo -e "start nginx service"
systemctl start nginx
Лезем в crontab -e и добавляем правило(тут нужно отметить что лезем от имени root):
0 2 * * * bash /root/certrenew.sh >> renew.log 2>&1
Каждый день в 2 ночи будет стартовать скрипт, рядом с ним можно будет найти как прошло обновление в файле renew.log
Настройка certbot в автоматическом режиме, данные берутся из конфига nginx:
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python-certbot-nginx
sudo certbot --nginx
sudo certbot renew --dry-run
Ну и добавить к крон certbot renew
0 2 * * * certbot renew >> /root/renew.log 2>&1
Скрипт на случай если nginx только в docker:
docker exec NGINXCONTANERNAME apk add py3-pip certbot
docker exec NGINXCONTANERNAME pip3 install pip --upgrade
docker exec NGINXCONTANERNAME pip3 install certbot-nginx
docker exec NGINXCONTANERNAME certbot renew
где NGINXCONTANERNAME - название контейнера с докером.
Установить certbot nginx plugin
apt-get install python-certbot-nginx