diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 0a353ed..0000000 --- a/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -**/*.md \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4f4f5c4..9c270ff 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,8 @@ logs/* ssl/* sites-enabled/* -project/* -!sites-enabled/reverse.conf.tmpl +!sites-enabled/reverse.conf.tplm !sites-enabled/http_redirect.conf !sites-enabled/default.conf -!sites-enabled/reverse.conf.tmpl.expanded -!sites-enabled/upstreams.conf.tmpl -!sites-enabled/static.conf.tmpl \ No newline at end of file +!sites-enabled/reverse.conf.tplm.expanded +!sites-enabled/upstreams.conf \ No newline at end of file diff --git a/Dockerfiles/Dockerfile_devserver b/Dockerfiles/Dockerfile_devserver deleted file mode 100644 index 9a612ed..0000000 --- a/Dockerfiles/Dockerfile_devserver +++ /dev/null @@ -1,12 +0,0 @@ -FROM nginx:stable-alpine -COPY --chmod=0440 ["./locations", "/etc/nginx/locations"] -COPY --chmod=0440 ["./configuration", "/etc/nginx/configuration"] -COPY --chmod=0440 ["./error-pages", "/etc/nginx/error-pages"] -COPY --chmod=0440 ["./resources", "/var/www/html/resources"] -COPY --chmod=0440 ["./resources", "/var/www/html/resources"] -COPY --chmod=0440 ["./nginx_configs/nginx.conf", "/etc/nginx/nginx.conf"] - -ARG CONT_IMG_VER -ENV CONT_IMG_VER=${CONT_IMG_VER:-v1.0.0} - -CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/Dockerfiles/Dockerfile_staticsite b/Dockerfiles/Dockerfile_staticsite deleted file mode 100644 index ef2b812..0000000 --- a/Dockerfiles/Dockerfile_staticsite +++ /dev/null @@ -1,41 +0,0 @@ -# Для доставки сертификати в /etc/nginx/ssl/ использовать volume -#ARGS: SERVER_NAMES, CERT_FILE, CERT_KEY_FILE, CONT_IMG_VER - -FROM nginx:stable-alpine -USER nginx -EXPOSE 80 443 - -#static site + http to https redirect server -COPY ./nginx_configs/nginx_static.conf /etc/nginx/nginx.conf - -#set server name if arg not empty -ARG SERVER_NAMES -RUN if [ ! -z ${SERVER_NAMES} ]; then \ - sed -i "s/server_name _;/server_name $SERVER_NAMES;/g" /etc/nginx/nginx.conf ;\ - fi - -#set certificate file name if arg not empty -ARG CERT_FILE -RUN if [ ! -z ${CERT_FILE} ]; then \ - sed -i "s/ssl_certificate \/etc\/nginx\/ssl\/cert.pem;/ssl_certificate \/etc\/nginx\/ssl\/$CERT_FILE;/g" /etc/nginx/sites-enabled/static.conf ;\ - fi - -#set certificate key file name if arg not empty -ARG CERT_KEY_FILE -RUN if [ ! -z ${CERT_KEY_FILE} ]; then \ - sed -i "s/ssl_certificate_key \/etc\/nginx\/ssl\/key.pem;/ssl_certificate_key \/etc\/nginx\/ssl\/$CERT_KEY_FILE;/g" /etc/nginx/sites-enabled/static.conf ;\ - fi - -#set container image version if arg not empty else 1.0.0 -ARG CONT_IMG_VER -ENV CONT_IMG_VER=${CONT_IMG_VER:-v1.0.0} - -#copy project files -COPY ./project /var/www/html/ - -CMD ["nginx", "-g", "daemon off;"] - -#build string example -#docker build -f Dockerfiles/Dockerfile_staticsite -t static_site --no-cache --build-arg SERVER_NAMES=softsols.ru . -#check server_name in image -#docker run --rm -it -p 8084:443 -p 8083:80 static_site sh -c "cat /etc/nginx/sites-enabled/static.conf" \ No newline at end of file diff --git a/compose_extends/docker-compose.base.yaml b/compose_extends/docker-compose.base.yaml deleted file mode 100644 index 75ab8a0..0000000 --- a/compose_extends/docker-compose.base.yaml +++ /dev/null @@ -1,8 +0,0 @@ -services: - reverse: - image: nginx:stable-alpine - container_name: reverse - hostname: reverse - restart: always - extra_hosts: - - "host.docker.internal=host-gateway" diff --git a/compose_extends/network.include.yaml b/compose_extends/network.include.yaml deleted file mode 100644 index efffb31..0000000 --- a/compose_extends/network.include.yaml +++ /dev/null @@ -1,5 +0,0 @@ -networks: - services: - external: true - driver: bridge - name: services \ No newline at end of file diff --git a/compose_projects/statc-dc.yaml b/compose_projects/statc-dc.yaml deleted file mode 100644 index e69de29..0000000 diff --git a/control.sh b/control.sh deleted file mode 100644 index f3faefe..0000000 --- a/control.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -#exec 0out.log -#exec 2>logs/error.log - -compose_file="docker-compose.yaml" -merge_file="docker-compose.limits.yaml" - -root_folder=`pwd` - -menu=" -[1] up dev reverse -[2] restart dev reverse -[3] down dev reverse -[4] ps dev reverse -" -input="" -while true -do - echo "$menu" - echo -n "Select function № on enter q to exit:\n" - read input - - if [ $input = "q" ] - then - break; - fi - - case "$input" in - 1) docker compose -f $compose_file -f $merge_file up -d;break ;; - 2) docker compose -f $compose_file -f $merge_file down && \ - docker compose -f $compose_file -f $merge_file up -d;break ;; - 3) docker compose -f $compose_file -f $merge_file down;break ;; - 4) docker compose -f $compose_file -f $merge_file ps;break ;; - *) echo "key not found" - esac -done - -echo "end of the script" diff --git a/docker-compose.limits.yaml b/docker-compose.limits.yaml deleted file mode 100644 index 5ee128b..0000000 --- a/docker-compose.limits.yaml +++ /dev/null @@ -1,5 +0,0 @@ -services: - reverse: - cpu_count: 2 - mem_limit: 256m - mem_reservation: 256m \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml deleted file mode 100644 index d6a6df2..0000000 --- a/docker-compose.yaml +++ /dev/null @@ -1,38 +0,0 @@ -name: reverse_dev -include: - - path: - - compose_extends/network.include.yaml - -services: - reverse: - extends: - file: compose_extends/docker-compose.base.yaml - service: reverse - build: - context: . - dockerfile: Dockerfiles/Dockerfile_devserver - args: - CONT_IMG_VER: "v1.0.0" - pull_policy: missing - volumes: - - "./sites-enabled:/etc/nginx/sites-enabled:ro" - ports: - - 80:80 - - 443:443 - networks: - - services - secrets: - - source: softsols_cert - target: /etc/nginx/ssl/live/softsols.ru/fullchain.pem - - source: softsols_key - target: /etc/nginx/ssl/live/softsols.ru/privkey.pem - -secrets: - softsols_cert: - name: softsols_cert - file: ./ssl/live/softsols.ru/fullchain.pem - external: false - softsols_key: - name: softsols_key - file: ./ssl/live/softsols.ru/privkey.pem - external: false \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d2b80a5 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,28 @@ +services: + reverse: + image: nginx:stable-alpine + container_name: reverse + hostname: reverse + restart: always + extra_hosts: + - "host.docker.internal=host-gateway" + volumes: + - "./nginx.conf:/etc/nginx/nginx.conf:ro" + - "./locations:/etc/nginx/locations:ro" + - "./configuration:/etc/nginx/configuration:ro" + - "./sites-enabled:/etc/nginx/sites-enabled:ro" + - "./error-pages:/etc/nginx/error-pages/" + - "./resources:/var/www/html/resources" + - "./ssl:/etc/nginx/ssl" + - "./logs:/var/log/nginx/" + networks: + local_net: {} + ports: + - 80:80 + - 443:443 + +networks: + local_net: + external: true + driver: bridge + name: services diff --git a/nginx_configs/nginx.conf b/nginx.conf similarity index 100% rename from nginx_configs/nginx.conf rename to nginx.conf diff --git a/readme.md b/readme.md index 6e6eafb..e69de29 100644 --- a/readme.md +++ b/readme.md @@ -1,2 +0,0 @@ -# Репозиторий с конфигурцаицями WEB-сервера Nginx -## Изначально Предназначен для использования в контейнере Docker \ No newline at end of file diff --git a/sites-enabled/default.conf b/sites-enabled/default.conf index 02909fe..f0e5281 100644 --- a/sites-enabled/default.conf +++ b/sites-enabled/default.conf @@ -7,10 +7,7 @@ server { ssl_certificate /etc/nginx/ssl/live/softsols.ru/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/live/softsols.ru/privkey.pem; - # Просматриваемый каталог по умолчанию, корень сайта root /var/www/html; - - # Открываемый файл по умолчанию index index.html index.htm; include configuration/_includes.conf; diff --git a/sites-enabled/reverse.conf.tmpl b/sites-enabled/reverse.conf.tplm similarity index 100% rename from sites-enabled/reverse.conf.tmpl rename to sites-enabled/reverse.conf.tplm diff --git a/sites-enabled/reverse.conf.tmpl.expanded b/sites-enabled/reverse.conf.tplm.expanded similarity index 100% rename from sites-enabled/reverse.conf.tmpl.expanded rename to sites-enabled/reverse.conf.tplm.expanded diff --git a/sites-enabled/static.conf.tmpl b/sites-enabled/static.conf.tmpl deleted file mode 100644 index 5d8df29..0000000 --- a/sites-enabled/static.conf.tmpl +++ /dev/null @@ -1,68 +0,0 @@ -# ПРИМЕР конфигурации для статичного сайта - -server { - #ipv4 - listen 443 ssl; - - #ipv6 - listen [::]:443 ssl; - - #Разрешить использование http2; - http2 on; - - #Доменное имя, по совпадению будет использована эта конфигурация - server_name resources.softsols.ru; - - #Имя файла сертификата (путь) - ssl_certificate /etc/nginx/ssl/live/softsols.ru/fullchain.pem; - - #Имя файла приватного(закрытого) ключа сертификата (путь) - ssl_certificate_key /etc/nginx/ssl/live/softsols.ru/privkey.pem; - - #Версии TLS, TLS v1.0 и 1.1 отключены по причине древности - ssl_protocols TLSv1.2 TLSv1.3; - - #Набор шифров для установления защищенного соединения (Только сильные шифры, запрет шифров без аутентификации, запрет хеш-флгортима md5) - ssl_ciphers HIGH:!aNULL:!MD5; - - #Использование только шифров, предлагаемых сервером - ssl_prefer_server_ciphers on; - - #Внешние зависимости - include configuration/_includes.conf; - - #Основной location для сайта - #Все запросы, отправленные на корневой url сайта - location / { - - #Корневой каталог - root /var/www/html/resources; - - #Индексный файл, используется по умлочанию - index index.html; - - #Логика обработки файлов и запросов - #Открывать файл(или каталог) из uri и, если нет, вернуть 404 - #Предотвращает ситуацию, когда сервер может случайно передать что-то нежелательное, если запрашиваемый ресурс не существует - try_files $uri $uri/ =404; - } - - #! Опционально - #кэширования для статических файлов(картинок, скриптов и т.д.) - #Бляха-муха, поясню: - # ~* - регистронезависимая регулярка - # \.(jpg|jpeg|png|gif|ico|css|js|svg)$ будет пременен ко всем файлам с соответствующими расширениями, например *.jpg$ - #т.е. location нацелен на обработку статических данных, которые можно кэшировать - location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg)$ { - #Сообщить клиенту (браузеру, прокси), что данные можно держать в кэше 30 дней - expires 30d; - #Добавляет возвращаемый заголовок Cache-Control управления кэшированием - #public - могут кешировать как браузеры, так и промежуточные прокси-серверы - #no-transform (промежуточные прокси-сервера и браузеры) не должны изменять содержимое файла (например, не должны перекодировать изображения) - #более гибкий и современный, чем Expires, и используется для более точного контроля кэширования. - add_header Cache-Control "public, no-transform"; - #! Опционально - #Отключает ведение логов доступа для этих файлов. - access_log off; - } -} \ No newline at end of file diff --git a/sites-enabled/upstreams.conf b/sites-enabled/upstreams.conf index e478f44..3e0f5c8 100644 --- a/sites-enabled/upstreams.conf +++ b/sites-enabled/upstreams.conf @@ -1,7 +1,7 @@ -upstream rr_backend { - server 127.0.0.1:8080 weight=5 max_fails=3 fail_timeout=60s; - server 10.9.0.9:80 weight=2 max_fails=3 fail_timeout=60s; - server google.com weight=3 max_fails=3 fail_timeout=60s; - server ya.ru backup; - keepalive 8; -} +# Использовать вместе с конфигурациями обратного прокси + +#Round Robin - запросы чередуются между серверами + +#Least Connections - запросы направятся к серверу с наименьшим числом подключений + +#IP Hash - запросы одного клиента всегда направляются на один сервер \ No newline at end of file diff --git a/sites-enabled/upstreams.conf.tmpl b/sites-enabled/upstreams.conf.tmpl deleted file mode 100644 index 960a1d5..0000000 --- a/sites-enabled/upstreams.conf.tmpl +++ /dev/null @@ -1,75 +0,0 @@ -# Использовать вместе с конфигурациями обратного прокси - -#Round Robin - запросы чередуются между серверами - upstream rr_backend { - server 127.0.0.1:8080 weight=5 max_fails=3 fail_timeout=60s; - server 10.9.0.9:80 weight=2 max_fails=3 fail_timeout=60s; - server google.com weight=3 max_fails=3 fail_timeout=60s; - server ya.ru backup; - keepalive 8; - - #server [hostname, ip] [вес сервера] [максимальное кол-во неудачных подключений] [описано ниже] - #Weight. Чем больше вес, тем больше трафика будет направлено серверу - #fail_timeout. время, в течение которого должно произойти количество неудачных попыток(max_fails), чтобы сервер был помечен как недоступный - #keepalive. максимальное количество открытых подключений к серверам в группе - - } - -#Least Connections - запросы направятся к серверу с наименьшим числом подключений - upstream lc_backend { - least_conn; - server 127.0.0.1:8080; - server 10.9.0.9:80; - server google.com; - server ya.ru backup; - keepalive 8; - } - -#IP Hash - запросы одного ip клиента всегда направляются на один сервер - upstream hi_backend { - ip_hash; - server backend1.example.com; - server backend2.example.com; - server backend3.example.com; - } - -#!!! Сторонний модуль ngx_http_upstream_hash_module -#URL Hash - запросы одного url клиента всегда направляются на один сервер - upstream hu_backend { - hash $request_uri consistent; # Хешируем по URI запроса - server backend1.example.com; - server backend2.example.com; - server backend3.example.com; - } - -#!!! Сторонний модуль nginx-sticky-module -#Sticky Sessions - привязка сессий - upstream ss_backend { - sticky; - server backend1.example.com; - server backend2.example.com; - server backend3.example.com; - } - -#пример блока server Sticky Sessions без модулей - http { - upstream backend { - server backend1.example.com; - server backend2.example.com; - server backend3.example.com; - } - - server { - listen 80; - - location / { - set $backend "backend"; # Переменная для прокси - if ($cookie_route) { - set $backend "backend_$cookie_route"; - } - - proxy_pass http://$backend; - add_header Set-Cookie "route=$backend; Path=/"; - } - } - }