Собственно сабж...
Народ, как решаете данную проблему?
Сайт постоянно сканируют левые боты и атаки с других стран...
Но сервисы гугла нужны.
Как закрыть сайт на уровне сервера?
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,289352,289352#msg-289352
привет!
может кто сталкивался, и знает, что с этим можно сделать.
ситуация - хостинг высокой плотности, на одном IP много доменов.
домены разные, каждый со своей бизнес логикой.
у Chrome включается какая-то оптимизация, и типа "ну раз IP один, то я
буду весь трафик гонять через одно tcp подключение". все бы ничего, но
некоторые сайты иногда рвут соединение. а Chrome в итоге рвет не
подключение до конкретного сайта, а вообще все, которые он умудрился
связать с этим tcp подключением.
частный пример - сайт, который иногда формирует очень длинные URL, не
помещающиеся в дефолтный http2_max_field_fize, при возникновение такой
ситуации Chrome рвет всё до этого IP адреса.
как-то не по христиански чтоли.
подумалось, что аналогичных хостингов высокой плотности в рассылке может
быть достаточное количество. не первый же я с таким столкнулся?
Илья Шипицин
Максим, а почему такое значение по-умолчанию у директивы ssl_protocols?
В частности, протокол TLSv1.3 выключен, но вместо него включены
протоколы TLSv1 и TLSv1.1 - сейчас ведь наоборот рекомендуют делать.
Даже RFC вышел соответствующий еще в мае 2015 года,
https://tools.ietf.org/html/rfc7525#section-3.1.1
И такие же настройки рекомендуются https://ssl-config.mozilla.org/
Почему бы не сделать ssl_protocols TLSv1.2 TLSv1.3; значением
по-умолчанию в nginx?
--
Best regards,
Gena
Добрый день уважаемые!
Выставляю на Ваш суд свою поделку. Просьба сильно не пинать:) Конечно ещё
сыровата... но я уже кушаю:)))
Просто не нашёл аналогичного... может плохо искал.... вот и пришлось
покодить немножко. Надеюсь полезная будет:)
Сервис "ITCOD-DISK" Облачное хранилище.
-- Copyright (c) 2015 by Yura Vdovytchenko (max(a)itcod.com)
-- Copyright (c)itcod 2010-2015
-- version: 15.06.27
-- license: MIT
Назначение: Сетевой диск(хранилище) файлов по технологии WEBDAV.
С публикацией по http/https и индексный файл с контрольными суммами
md5/etc.
Предназначен для хранения и публикации NoSQL информационных массивов.
Принцип: Сервис-ориентированная архитектура построения. Nginx обеспечивает
стандартный протокол WEBDAV over HTTP/HTTPS. Lua-модули itcod обеспечивают
расширение функций и сетевые сервисы управления ITCOD-DISK'ом.
ITCOD UI WWII обеспечивает WEB-интерфейс между пользователем и сервисами.
ОТЛИЧИЕ ОТ АНАЛОГОВ
NoLAMP NoLEMP NoSQL SOA
На сервере только Nginx + Lua и никаких PHP SQL и т.д.
БАЗОВЫЕ КОМПОНЕНТЫ ITCOD-DISK
LINUX - операционная система
NGINX - http daemod (with WebDAV and Lua)
LUA - язык программирования
Resty - библиотека Lua
add - дополнительные библиотеки (см. require в *.lua)
ITCOD Lua Modules & Services - модули SOA ITCOD для операций с хранилищем
ITCOD WWII - web-интерфейс для ITCOD-DISK (в разработке)
БАЗОВЫЕ КОМПОНЕНТЫ ITCOD Lua Modules & Services
auth-dav.lua - авторизатор для HTTP/HTTPS/WEBDAV
md5index.lua - расширитель функций autoindex NGINX
itcod-user.lua - создание пользовательских юзербоксов на диске WEBDAV
itcod-exchange.lua - сервис транспорта файлов между пользователями и
дисками
itcod-search.lua - REST-сервис авторизованного поиска информации в закрытых
пользовательских массивах
libs/ - библиотека иконок типов файлов для md5index
Подробнее о компанентах см. https://ihome.itcod.com/max/project/
КОНФИГУРАЦИЯ NGINX
nginx version: nginx/1.7.11
built by gcc 4.4.4 20100630 (Red Hat 4.4.4-10) (GCC)
TLS SNI support enabled
configure arguments:
--prefix=/usr/share/nginx
--sbin-path=/usr/sbin/nginx
--conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--http-client-body-temp-path=/var/lib/nginx/tmp/client_body
--http-proxy-temp-path=/var/lib/nginx/tmp/proxy
--http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi
--http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi
--http-scgi-temp-path=/var/lib/nginx/tmp/scgi
--pid-path=/run/nginx.pid
--lock-path=/run/lock/subsys/nginx
--user=nginx
--group=nginx
--with-pcre-jit
--with-debug
--with-file-aio
--with-ipv6
--with-http_ssl_module
--with-http_realip_module
--with-http_addition_module
--with-http_xslt_module
--with-http_image_filter_module
--with-http_geoip_module
--with-http_sub_module
--with-http_dav_module
--add-module=/usr/src/nginx-dav-ext-module-master
--with-http_flv_module
--add-module=/usr/src/f4f-hds-master
--with-http_mp4_module
--with-http_gzip_static_module
--with-http_random_index_module
--with-http_secure_link_module
--with-http_degradation_module
--with-http_stub_status_module
--with-http_perl_module --with-mail
--with-mail_ssl_module
--with-http_auth_request_module
--add-module=/usr/src/echo-nginx-module-master
--add-module=/usr/src/nginx_md5_filter-master
--add-module=/usr/src/ngx_devel_kit-master
--add-module=/usr/src/lua-nginx-module-master
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
-fstack-protector
--param=ssp-buffer-size=4 -m64 -mtune=generic'
--with-ld-opt=' -Wl,-E,-rpath,/usr/local/lib'
КОНФИГУРАЦИЯ ВИРТУАЛЬНОГО WEB-СЕРВЕРА (WEBDAV)
Приведена конфигурация nginx работающего на виртуальной машине
за проксирующим первичным nginx. Для работы на первичном вам необходимо
изменить listen на 80 и 443. А так же не забудьте поправить основные
настройки на ваши собственные (имена сервера и т.д.)
Файл ihome.conf
server {
listen 7070;
server_name "~^ihome\d+\.itcod\.com$"
ihome.virtual.ko
ihome.itcod.com
;
server_name_in_redirect off;
expires epoch;
ssl off;
#default_type application/octet-stream;
set_real_ip_from 10.255.255.7;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
access_log /var/log/nginx/ihome.itcod.com-access.log main;
resolver 10.255.255.1 [::1]:5353;
charset utf-8;
set $dir /opt/home;
set $testdir $dir$uri;
set $uri_type none;
if (-d $testdir) { # такая папка есть
set $uri_type dir;
rewrite ^(.*)$ $1/;
rewrite ^(.*)/+$ $1/;
}
if (-f $testdir) { # такой файл есть
set $uri_type file;
}
if ($request_method = "MKCOL") {
rewrite ^(.*)$ $1/;
rewrite ^(.*)/+$ $1/;
set $uri_type dir; #клиент webdav создает папку
}
if ($request_method = "PUT") {
set $uri_type file; #передаем только файлы
}
if ($request_method = "POST") {
set $uri_type file; #постим только файлы
}
set $sadm_passwd .uhtpsw;
set $user_passwd .htpasswd; #user:password[crypt(3)/md5/sha1]
set $user_permit .htpermit; #user:GET,PUT,....OPTIONS
set $user_permit_default GET,PROPFIND,OPTIONS; # Allow
merge_slashes on;
location / {
limit_req zone=itcod burst=200 nodelay;
limit_rate 2048k;
access_by_lua_file /etc/nginx/lua/auth-dav.lua;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
dav_access user:rw group:rw;
client_body_temp_path /opt/itcod-dav.tmp/;
client_max_body_size 0;
autoindex on;
root $dir;
header_filter_by_lua_file /etc/nginx/lua/itcod-exchange.lua;
set $md5index on; #on/off nil=off # вкл/выкл обработчик
set $md5index_hash md5; #none/md5/md4/sha1/sha/ripemd160 nil=none # тип
выводых хэшей
set $md5index_size 50000; #kb nil=unlimit # не считать для файлов более N
kb
set $md5index_path on; #on/off nil=off # заменять относительный путь
ссылок на полный URI
set $md5index_nonblank on; #on/off nil=off # заменить множественные пробелы
одним
set $md5index_type on; #on/off nil=off # добавит в строки описание типа
file/directory/etc...
set $md5index_ico http://ihome.itcod.com/max/projects/libs/icons16ext/; #
путь к библиотека иконок
set $md5index_icopref icon-; # префикс имени файла иконки
#set $md5index_icosuf -icon; # суфикс имени файла иконки
set $md5index_icoext .gif; # расширение файла иконки
set $md5index_win _blank; # target window for !winext! files
set $md5index_winext htm.html.txt; # file extension for target windows
body_filter_by_lua_file /etc/nginx/lua/md5index.lua; # addon
обработчик
}
location ~/\.uht {
deny all;
}
location /search/ {
content_by_lua_file /etc/nginx/lua/itcod-search.lua;
}
location /user/ {
content_by_lua_file /etc/nginx/lua/itcod-user.lua;
}
}
ПРИМЕЧАНИЕ
Для программистов адекватных perl, проблем определить и загрузить
недостающие
модули require не составит труда. В случае если у вас, что то не получается
пишите тут или на max(a)itcod.com обязательно помогу.
ТЕКУЩИЕ РАБОТЫ
Формирование WebUI ITCOD-DISK
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,259941,259941#msg-259941
Изменения в nginx 1.19.5 24.11.2020
*) Добавление: ключ -e.
*) Добавление: при сборке дополнительных модулей теперь можно указывать
одни и те же исходные файлы в разных модулях.
*) Исправление: SSL shutdown не работал при закрытии соединений с
ожиданием дополнительных данных (lingering close).
*) Исправление: при работе с gRPC-бэкендами могли возникать ошибки
"upstream sent frame for closed stream".
*) Исправление: во внутреннем API для обработки тела запроса.
--
Maxim Dounin
http://nginx.org/
Здравствуйте!
У меня наверное быстро решимая
проблема, но я просто решение вопроса
не вижу.
Работает у меня nginx 1.0.8
--------
nginx: nginx version: nginx/1.0.8
nginx: configure arguments: --with-http_gzip_static_module
--with-openssl=/usr/include --with-http_stub_status_module
--http-proxy-temp-path=/dev/shm/nginx/proxy_temp
--http-fastcgi-temp-path=/dev/shm/nginx/fastcgi_temp
--http-uwsgi-temp-path=/dev/shm/nginx/uwsgi_temp
--http-scgi-temp-path=/dev/shm/nginx/scgi_temp
--http-client-body-temp-path=/dev/shm/nginx/client_body_temp
--http-log-path=/var/log/nginx/access.log
--error-log-path=/var/log/nginx/error.log
--conf-path=/etc/nginx/nginx.conf --user=www-data --group=www-data
--------
и в соответствующем файле у меня стоит
в секции Server:
--------
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
------
всё такие я получаю ошибку 404, когда я на
сервере наберу "GET domain/status"
В чем может состоить проблема?
Спасибо вам большое.
Андрей
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,216178,216178#msg-216178
Есть служба работающая на локальной машине в частности torrserver,
отзывается на порту 8090. хочу доступ к ней из интернета не через проброс
порта 8090 за NAT, а через nginx(чтоб не создавать кучу портов за NAT о
всех служб что есть в домашней сети, темболее часть из них без
авторизации..
Итак делаю:
server {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
listen 8080 ;
location /torrserver/ {
proxy_pass http://127.0.0.1:8090/;
}
Где 8080 порт проброшеный за NAT от nginx
/torrserver/ - имя службы по которому nginx будет перенаправлять запросы на
порт 8090
И вводя в браузере
IP:8080/torrserver
Я попадаю на веб морду от to reserve слушаюшую на удаленной машине порт
8090, казалось бы вот оно счастье, но....
Все кнопки/управление на этой странице возвращают ошибку 404
Потому как происходит запрос другого адреса
Например "настройки"
Вида
IP:8090/settings
И.т.д..
Если бы я заходил по 8090 то все бы работало..
Через nginx при 8080/torrserver разумеется нет потому как страница
8090/settings в nginx не существует..
Хочу так настроить редирект/проксирование
Чтоб открыв страницу по
IP:8080/tiorrserver
Функционирование/переход с этой страницы по кнопкам управления на ней также
шел через nginx
Т.е. при клике например по томуже settings запрос уходил к
8080/torrserver/settings а не к 8090/settings
Можно ли это реализовать? С помощью каких команд в конфиге nginx не в
смысле конкретно /settings/ а все ссылки на этой странице обрабатывались
как будто бы nginx между пользователем и службой torrserver вообще
отсутствует , (не знаю как правильно сформулировать, своими словами, чтоб
при удаленном доступе вместо IP:8090(проброшенрого порта 8090) служба
отзывалась на IP:8080/transmission/ и полностью функционировало
управление...
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,289911,289911#msg-289911
Добрый день! подскажите пожалуйста как можно реализовать авторизацию при
проксировании. Есть два сервера(бекенд и фронт). По требованиям безопасности
необходимо чтобы было проксирование с фронта на бек по защищенному
соединению с авторизацией.
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,289943,289943#msg-289943
Добрый день,
Помогите разобраться.
у меня в домашней сети
Есть компьютер(Linux) на нем крутится несколько серверов (используется как
медиацентр):торрент качалка,Plex, dlna, и т.п.. каждый слушает свой порт.. и
все хорошо(в домашней сети)...
. Хочется управлять им удаленно, из интернета, для этого можно пробросить их
парты за NAT.. но во-первых не все сервера с авторизацией, да и просто
держать за натом кучу открытых портов мне кажется не самой лучшей идеей....
И можно поставить ngnix, за NAT вывести только его порт,а он уже будет
редиректить на соответствующие службы внутри домашней сети, а заодно по
необходимости прверять авторизацию
...
Я ещё совсем зелёный и у меня пока ничего не получилось.. по манам ставилю
ngnix..
При тесте на 80 порту выдает дефолтную страничку...
И пытаюсь добавить правила/серверы в конфиг.. запутался в именах серверов..
Т.е. Я хочу придумать им имена по названию служб
И в браузере вводить:http://IP:port/server_name
Чтобы ngnix слушающий 80й порт, сопоставлял server_name с тем что у него
имеются в конфиге
И редиректил на соответствующий порт
Пример:
В браузере удаленной машины ввожу
Http://192.168.1.100/transmission
Где -192.168.1.100(или внешний белый ip) адрес машины где крутится ngnix
"transmission"- имя сервера по которому ngnix должен опознать запрос и
перенаправить на соответствующий порт
В правилах ngnix
server {
...
server_name transmission www.transmission
location / {
proxy_pass http://192.168.1.100:8091/;
}
}
-где 8091 номер порта где отвечает transmission в локальной сети...
И так для всех служб для которых я хочу сделать редирект через ngnix
(Свое уникальное имя сервера и порт на котором запущена /слушает служба)
Далее рестарт ngnix
И пока ничего не получается, при удаленном запросе в браузере (из домаашней
сети)
http://192.168.1.100/transmission
Получаю 404, а хочу получить вебморду от торрент качалки...
Ч.Я Д.Н.Т?
Подскажите, как правильно прописать подобное перенаправление, и как
правильно придумывать имена серверов/сайтов (для служб запущенных на той же
машине где и ngnix , каждая служба отвечает на своем порту) чтоб редирект
через ngnix их распознавал?
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,289885,289885#msg-289885
Подскажите а можно ли настроить ngnix для работы с soscks5?
Есть privoxy -soksk5 настроенная для заворота трафика в tor..
Работает на порту 8118
Для ее использования в настройках прокси браузера соответственно надо
указать ip:8118
-так все работает, но держать открытым и проброшенным за NAT порт без
авторизации не очень правильно..
Хочу настроить ngnix , ,,чтоб убрать 8118 из пророщенных портов..
Делаю
listen 8080 {
location /privoxy/ {
proxy_pass http://127.0.0.1:8118/;
}
Где 8080-порт который слушает nginx и именно он будет проброшен за NAT
/privoxy/ -имя которое будет слушать nginx для проксирования на порт 8118
-и не работает, причем как-то странно, если в браузере изменить сокс с
:ip:8118 на IP:8080/privoxy -еше пару минут работает, и трафик идёт через
тор, но после пары обновлений страницы(сек через 30)- сокс похоже
отваливается и в сеть я выхожу с IP от провайдера, а не от выходной годы
Тор, как если бы сокс работал..
Подскажите можно ли настроить корректно , или nginx не умеет работать как
обратное пробки для socks5?
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,289908,289908#msg-289908