http {
upstream backend {
server primary_server.example.com; # Основной сервер
server backup_server.example.com backup; # Резервный сервер
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 10s; # Тайм-аут ожидания ответа от сервера
proxy_send_timeout 10s; # Тайм-аут на отправку данных к серверу
proxy_next_upstream error timeout http_502 http_503 http_504; # Условия перехода на резервный сервер
}
}
}
на что влияет параметр tsc
может быть NO ANSWER да же, если кто-то ответил на звонок.
;; Это надо вставить перед вызовом очереди
same => n,Set(CHANNEL(hangup_handler_push)=hdlr-queue-miss-call,s,1(${CALLERID(num)})
[hdlr-queue-miss-call]
exten => s,1,Noop(---==== Handler queue miss call ===---)
same => n,Set(CLIENT_NUMBER=${ARG1})
same => n,GotoIf($[${ABANDONED}]?:end_call)
same => n,AGI(tg-noanswer.php, ${CLIENT_NUMBER}, ${STRFTIME(${EPOCH},,%Y.%m.%d--H:%M:%S)})
same => n(end_call),Hangup()
дата действия CA 365 дней
(так консоль сервера становится доступной только одному пользователю),
sudo iptables -I DOCKER-USER -i ens3 ! -s IP/24 -j DROP
sudo iptables -I DOCKER-USER -i ens3 ! -s IP/24 -p tcp -m tcp --dport 80 -j DROP
services:
nginx:
image: nginx:alpine
restart: always
ports:
- 80:80
- 443:443
networks:
- web
volumes:
- ./letsencrypt:/etc/letsencrypt:ro
- ./www:/var/www/html
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/conf:/etc/nginx/conf.d
- ./nginx/logs:/var/log/nginx
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
certbot:
image: certbot/certbot
environment:
- PGID=101
- PUID=101
volumes:
- ./letsencrypt:/etc/letsencrypt:rw
- ./www/certbot:/var/www/certbot
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
[Interface]
PrivateKey = <VPN_SERVER_PRIVATE_KEY>
Address = 10.8.0.1/24
ListenPort = 51820
[Peer]
PublicKey = <CLIENT2_PUBLIC_KEY>
AllowedIPs = 10.8.0.2/32, 192.168.10.0/24 ## маршруты сами прописываются в таблицу маршрутизации сервера
[Peer]
PublicKey = <CLIENT3_PUBLIC_KEY>
AllowedIPs = 10.8.0.3/32, 192.168.88.0/24 ## маршруты сами прописываются в таблицу маршрутизации сервера
## Forward
sudo sysctl -w net.ipv4.ip_forward=1
## Firewall
sudo iptables -A FORWARD -i wg0 -j ACCEPT
sudo iptables -A FORWARD -o wg0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
## Публикуем порт и прокидываем его на сервер в локальной сети за Клиент 2 через VPN
iptables -t nat -A PREROUTING -i enp3s0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.10.10:80
[Interface]
Address = 10.8.0.2/32
PrivateKey = <CLIENT2_PRIVATE_KEY>
Table = 100
PostUp = ip rule add from 10.8.0.2 table 100; ip route add 192.168.88.0/24 dev wg0; ip route add 10.8.0.0/24 dev wg0; ip rule add fwmark 1/3 table 100
PostDown = ip rule del from 10.8.0.2 table 100; ip route del 192.168.88.0/24 dev wg0; ip route del 10.8.0.0/24 dev wg0; ip rule del fwmark 1/3 table 100
[Peer]
AllowedIPs = 0.0.0.0/0
PublicKey = <VPN_SERVER_PUBLIC_KEY>
Endpoint = <VPN_SERVER_IP>:51820
## Forward
sudo sysctl -w net.ipv4.ip_forward=1
## Firewall
sudo iptables -A FORWARD -i wg0 -j ACCEPT
sudo iptables -A FORWARD -o wg0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o enp4s0 -j MASQUERADE
## Вот эта строчка маркирует ответ от веб сервера, а потом на него
## применяется правило (ip rule add fwmark 1/3 table 100) и пакет попадает в таблицу 100 и
## при такой конфигурации будет виден реальный IP клиента.
## При этом сервер 192.168.10.10 в интернет будет выходить через gw (Клиент 2),
## а ответы отправлять в VPN.
iptables -t mangle -A PREROUTING -i wg0 -m conntrack --ctstate NEW -j CONNMARK --set-xmark 0x1/0x3
iptables -t mangle -A PREROUTING -i enp3s0 -m connmark ! --mark 0x0/0x3 -j CONNMARK --restore-mark --nfmask 0x3 --ctmask 0x3
[Interface]
Address = 10.8.0.3/32
PrivateKey = <CLIENT3_PRIVATE_KEY>
Table = 100
PostUp = ip rule add from 10.8.0.3 table 100; ip route add 192.168.10.0/24 dev wg0; ip route add 10.8.0.0/24 dev wg0; ip rule add fwmark 1/3 table 100
PostDown = ip rule del from 10.8.0.3 table 100; ip route del 192.168.10.0/24 dev wg0; ip route del 10.8.0.0/24 dev wg0; ip rule del fwmark 1/3 table 100
[Peer]
AllowedIPs = 0.0.0.0/0
PublicKey = <VPN_SERVER_PUBLIC_KEY>
Endpoint = <VPN_SERVER_IP>:51820
## Forward
sudo sysctl -w net.ipv4.ip_forward=1
## Firewall
sudo iptables -A FORWARD -i wg0 -j ACCEPT
sudo iptables -A FORWARD -o wg0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o enp4s0 -j MASQUERADE
main_queue:
build:
context: .
dockerfile: Dockerfile
command: 'php artisan queue:work'
depends_on:
- main_db
networks:
- mm-network
environment:
- DB_CONNECTION=${DB_CONNECTION}
- DB_HOST=${DB_HOST}
- DB_PORT=${DB_PORT}
- DB_DATABASE=${DB_DATABASE}
- DB_USERNAME=${DB_USERNAME}
- DB_PASSWORD=${DB_PASSWORD}
main_queue:
build:
context: .
dockerfile: Dockerfile
command: 'php artisan queue:work'
depends_on:
- main_db
networks:
- mm-network
env_file:
- .env
- По локальной сети, предположим - 192.168.30.10:9000
- Через VPS, предположим - vps_1.org:9001
- Через VPS, предположим - vps_1.org:9001
- Через резервный VPS, предположим - vps_2_reserve.org:9002