Ответы пользователя по тегу Nginx
  • Как настроить проксирование сайта в nginx?

    у тебя проблема в том что все маны в интернете по настройке nginx+apache с ошибкой.
    Все они подразумивают перенаправление
    http -> http
    https -> http + костыль
    переделай как положено
    http -> http
    https -> https и все будет норм.
    убрав костыль у тебя в http host пропадет порт
    server {
    ######################################################################
    ## Server configuration 
    ######################################################################
    	listen *:443 ssl http2;
    		server_name 3dpaneli.ru www.3dpaneli.ru   ;
    	root /var/www/3dpaneli.ru/web;
    
    
    ######################################################################
    ## Enable gzip for proxied requests and static files
    ######################################################################
        # Enable gzip for proxied requests and static files
        gzip on;
        gzip_proxied any;
        gzip_vary on;
        gzip_http_version 1.1;
        gzip_types application/javascript application/json text/css text/xml;
        gzip_comp_level 4;
    
    ######################################################################
    ## SSL configuration
    ######################################################################
    # recommended but not manditory directive
    # leave commented out unless you know what it is doing
    #more_set_headers 'Strict-Transport-Security: max-age=15768000';
    	ssl on;
    	ssl_session_cache  shared:SSL:10m;
    	ssl_session_timeout 1h;
    	ssl_protocols TLSv1.2 TLSv1.3;
    	add_header Strict-Transport-Security "max-age=15768000" always;
    	ssl_stapling on;
    	ssl_stapling_verify on;
    	ssl_prefer_server_ciphers on;
    	ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    	ssl_certificate /var/www/clients/client132/web171/ssl/3dpaneli.ru-le.crt;
    	ssl_certificate_key /var/www/clients/client132/web171/ssl/3dpaneli.ru-le.key;
    	ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    ######################################################################
    ## Log configuration
    ######################################################################
    #Все логи отключены  
            error_log /dev/null crit;
            access_log off;
    
    
    ######################################################################
    ## Errors send to apache2
    ######################################################################
    # у апача своих алиасов куча,  а так же некоторая статика отдается 
    # средствамси php, по этому все ошибки обрабатывать только apache2
    	error_page 401 403 404 405 500 502 503 = @fallback;
    	location @fallback {
    		proxy_pass		https://127.0.0.1:4443;
    		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	HTTPS		YES;
    		}
    
    ######################################################################
    ## Locations configuration
    ######################################################################
    #Отключаем логирование ошибок No such file or directory
    ## Disable .htaccess files
    
    	location ~ /\.ht {
    		deny all;
    
    		access_log off;
    		log_not_found off;
    	}
    	##
    	location = /favicon.ico {
    		log_not_found off;
    		access_log off;
    	}
    	##
    	location = /robots.txt {
    		allow all;
    		log_not_found off;
    		access_log off;
    	}
    	##
    ######################################################################
    # сервисы  на сайте phpmyadmin почта и letxencrypt
    	location /phpmyadmin/ {
    		deny all;
    		root  /usr/share/phpmyadmin/;
    	}
    	##
    	location /webmail/ {
    		rewrite ^/(.*)$ https://$http_host:8080/$1 permanent;
    	}
    	# letsencrypt 
    	 location /.well-known/acme-challenge/ { 
    	 	alias /usr/local/ispconfig/interface/acme/;
    	 	default_type text/plain;
    
    	 }
    # static content 
    # Отдаем статику напрямую с nginx
    	location ~* ^.+\.(jpg|jpeg|svg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|mp3)$ {
    		root  /var/www/3dpaneli.ru/web;
    		access_log off;
    		expires max;
    		gzip_static on;
    	}
    # default location
    	location / {
    		index index.php index.html index.htm;
    		proxy_pass		https://127.0.0.1:4443;
    		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	HTTPS		YES;
    		}
    }

    ну и тоже самое без https

    server {
    	listen *:80;
    	server_name 3dpaneli.ru www.3dpaneli.ru   ;
    	root /var/www/3dpaneli.ru/web;
    ......
    proxy_pass		http://127.0.0.1:82;
    ....
    }
    Ответ написан
  • Как проксипасить https на http?

    вот я раз пять прочитал и мне понимание чего вы хотите так и не пришло, вот реально старался какой-то бред написан.
    Вы опишите реально саму проблему а не то что вы хотите сделать.
    и я вам скажу что нужно для этого сделать
    если у вас бэк на https а фронт нет, то в чем проблема то ?
    фронт это прокся ей плевать ващет на сертификат сзади.
    вы бы хоть свой конфиг сюда дали а то телепатия сегодня не очень, там магнитные бури, рептилойды. все дела.

    короче вангую
    server {
               listen *:80;
               server_name 3dpaneli.ru www.3dpaneli.ru   ;
                root /var/www/3dpaneli.ru/web;
    ....
      location / {
                    proxy_pass              https://127.0.0.1:443;
                    proxy_set_header        Host            $host;
                    proxy_set_header        X-Real-IP       $remote_addr;
                    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                                    }
    ......
    }


    Вам это нужно ?
    Ответ написан
  • Nginx proxypass cache и php, как правильно настроить?

    shambler81
    @shambler81 Куратор тега Linux
    в 99% случае было бы целесообразнй поработаь с кодом самого сайта это факт, улучшить систему кеширования переделать самые тяжелые запросы как правило при разрастание проекта такое не редко, и тут добиться производительности можно куда быстрей чем через костыли.
    так же не забывайте что если часть сайта не хотите кешировать то сделайте отдельный локейшен под эхто мероприятие.
    Так же есть особые рекомендации в индивидуальном порядке каждому движку.
    Так же не забывайте что даже смена версии пхп может сильно улучшить ситуацию опять же нужно смотреть что у вас, если вы на 5.6 то точно 100% да
    и даже если на 7.0
    не забывайте что так же у вас должен быть подключен opcache и качественно отстроены конфиги apache nginx и mysql это вам тоже должно дтаь отличный буст.
    до 50К посетителей сайт должен справляться на одном сервере без костылей.
    так что больше вводных
    какие версии че за по сслку на сайт ( это не сеерет, вы еще и за директ платите чтоб я ее узнал)
    Ответ написан
    Комментировать
  • Как отследить появление http трафика на сервере?

    shambler81
    @shambler81 Куратор тега Linux
    Не нужно его сбрасывать, его нужно синхронизировать.
    Мемкеш он с легкостью балансируется, собственно вы балансируете весь сессии и кеш
    Конечно можно сделать что-то вроде
    cat /var/log/nginx/access.log | grep  "тут признак того что   хиты нужные тебе пошли на него" | grep " тут признак  по дате или через awk   там омжно диапазон дат указывать." && /usr/bin/php /home/www/xxxx/current/app/cli.php cache clear prod

    И все это в крон, но лучше синхронизировать сессии и кеш
    Ответ написан
    1 комментарий
  • Как использовать переменные из server_name nginx?

    не выдумывайте велосипед
    1. у вас 3 сайта сделайте три конфига как и положено, не изобретайте велосипед тем более на пустом месте.
    2. У вас 300 сайтов, тут вам поможет шаблонизатор или веб морда, собственно всего этого тоже навалом. и бесплатно и хорошего качества, зачем крутить костыли опять же непонятно.
    3. У вас динамичекие имена доменов, но тут доложено управлять ядро проекта и тут строго индивидуально.
    Ответ написан
  • Как получить в access.log все данные, включая действия с ftp, ssh и т.д.?

    Все совершенно логично, не вижу что тут не так
    У вас есть демон nginx у него есть access.log
    и у вас есть демон vsftpd у него свой лог, по какой причине они должны быть вместе?
    Тем более как правило за это отвечает /var/log/syslog ( имеется в виду помойка всех логов)
    По какой причине они бы отображались в обычном аксесс логе?
    у них вообщеразные функции
    Ответ написан
  • Nginx. Как при отсутствии файла перенаправлять запрос на php?

    через error_page
    error_page 401 403 404 405 500 502 503 = @fallback;
            location @fallback {
                    proxy_pass              http://127.0.0.1:82;
                    proxy_set_header        Host            $host;
                    proxy_set_header        X-Real-IP       $remote_addr;
                    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    
                    }

    try_files соответственно можно убрать
    конфиг приведен для nginx+apache
    Ответ написан
  • Как правильно захардкодить запрос с https на http?

    Не страдайте...
    Переводите бэк на https
    сделать это можно и мало того в большенстве манов по nginx так и делают, НО как вы заметили бэк должен иметь https в противном случае вот такую хрень вы будете ловить всегда.
    Ответ написан
    Комментировать
  • Из-за чего скачки времени обработки запросов?

    1. iotop -okaво время таких фризов
    2. переведите режим работы процессоров с энерджи сейв в перфоманс cat /proc/cpuinfo | grep MHz все процессоры должны иметь или максимальную частоту или близкую к ней.
    Когда процессор "холодный" то ему нужно время поднять частоту, и получается что он быстрей иногда отрабатывает под нагрузкой чем полностью пустой но с 800MHz
    3. не забывайте что php+sql один и тот же запрос могут выполнить с разной скоростью, притом эта разница нифига не в 1% а порой доходит до 300% и усугубляется очередью как в sql так и на любом этапе.
    4. Могу вам сказать что по факут является самым распространенным

    а) i-o диска особенно HDD ( nvme) можно даже не тестировать.
    б) sql параллелит свои запросы но один запрос делает на 1 ядре, в результате 128 ядерный камень по 2Ghz может работать медленней вашего офисного Corei3 поскольку такт на ядро у него больше.
    в) кеш php кешируйте все что только можно и грамотно, как правило в этом месте можно ускориться раз в 10-30, даже не оптимизируя запросы в бд
    г) находите самые тяжелые запросы в бд и оптимизируйте их.

    Теперь что скорее всего происходит
    у вас встает очередь запросов в бд, например идет тяжелый хит скажем каталог с 5 фильтрами, в это время остальные запросы встают в очередь, и даже мелкие из них выполняюются медленно поскольку пред ними стоит тяжелый товарищь.
    ТАк вот к примеру когда делается 1 тяжелый запрос встало еще 300, и они вместе начинают лезть и выполняться.
    В результате получается то - же самое что выделить 10000 файлов в винде на hdd и скопировать параллельно а не последовательно
    I-O проседает многократно порой до десятков тыс раз.
    Пример утрированный но тем не менее.
    В результате у вас затык на пустом месте, когда LA системы 5 I-O 10% sql=100% на 1 камне.
    Как правило ситуация дальше осложняется по следующей схеме
    занимаются все камни тяжелыми хитами, тем более с каждым разом это становится легче, поскольку ресурсы других камней уже заняты, в результате раз в день база начинает тормозить, и ее рестартуют по крону.
    ;)))
    Но все индивидуально.
    Ответ написан
    6 комментариев
  • Как в nginx перенаправить ssl порт на другой?

    Вы все правильно сделали все что вам нужно выдать новые или старые сертификаты проксирующему серверу
    если вы выдадите самоподписанные и подпишите име то все будет работать
    бэк будет работать со своими фронт со своими, конфликта не будет
    Мало того если на фронте вы используете LetsEncrypt сертификаты то домен будет так же доверительным вне зависимости от бэка который может быть вообще на 80, но я бы так не рекомендовал.

    Если у вас доверительный сертификат на бэке и вы хотите чтоб внешка была на нем-же то без вариантов вам нужно будет подтягивать сертификаты, это сделать достаточно легко, есть множество способов.
    НО насколко я вижу у вас тут просто IP соответственно LE сертификат уже не пойдет.
    А вот если бы вы сделали nextcloud .site.ru домен то можно было бы на него уже получить сертификат ( думаю сайт то у вас есть ?)
    В таком случае сертификат получаете на фронте и проксируете куда хотите.
    Ответ написан
    2 комментария
  • Проблема с получением SSL сертефиката через Certbot. Detail: Invalid response from?

    Тут вроде по русски написано
    1. не смог положить файл domain_name_2/.well-known/acme-challenge/4UtNTakW9...
    не хватило прав ли не смог сохранить.
    2. вариант У вас в ДНС записях есть запимсь ААА - которая не поддерживается letsencrypt
    3. ваши редиренкты отдают 302 вместо 200 как мы видем у васнет исключеня.

    Теперь что касается каталога
    то можно сделать так

    location /.well-known/acme-challenge/ {
                    alias /usr/local/ispconfig/interface/acme/;
                    default_type text/plain;
             }

    и в моем случае ве эти файлики я прошу crtbot ложить в /usr/local/ispconfig/interface/acme/
    получается как phpmyadmin дописав к любому сайту попадаешь в эту папку.
    ДА и ваш домен не является секретным, вы его даже в директе прдвигаете, так что если вы его дадите будет проще разобраться
    Ответ написан
    3 комментария
  • Https заменяется на http после прохода через nginx?

    ТАК НЕЛЬЗЯ ДЕЛАТЬ!
    Какой-то идиот написал ман и все маны в интернете ошибочны ( да оно работает но есть множество но)
    И это связано именно с тем что бэк не знает что он на https, да есть частичные костыли которые решают большинство косяков ( но не все)
    Короче если в кратце
    http -> http
    https -> https
    Подставляете тот же сертификат на бэке
    Падения производительности нет.
    Придумывать велосипед смысла нет, делайте как положено и все будет хорошо
    тот гений что придумал миксовать контент, может и ответит зачем он так придумал но реально от этого решения нет никакой пользы а вот минусы есть
    Ответ написан
  • Перехват ошибок Apache + Nginx?

    404 должен отработать движк CMS, как минимум он должен отдать футер хедер сайта, ну и саму 404 . собственно как должно сработать
    1. nginx - видит 404
    2. следовательно эта ошибка и обрабатывается отдельным локейшеном отдавая 404 на apache возможно он сможет найти файл или выполнить с другим кодом.
    3. он не находит и движок сайта отдает 404.
    только так.
    Ответ написан
  • Почему не запускается NGINX?

    ты не все удалил от апача у тебя он остался, висит демон посмотри кто слушает порт.
    2. если ты так слабо разбираешся в веб сервере то лучше ипользуй сборки с веб мордой
    vestacp ispconfig3 braynycp
    нет особого смысла все это делать руками, а тонкую подтройку можно сделать везде
    Ответ написан
  • Каким образом настроить редирект в nginx?

    RewriteCond %{REQUEST_URI} !^(.*)/catalog/test2$ 
    RewriteRule ^/catalog/test(.*) /catalog/test2$1 [R=301,L]
    Ответ написан
  • Какие подходы используются сейчас при построении веб-серверов?

    shambler81
    @shambler81 Куратор тега Linux
    И так что вам понадобится.
    1. поскольку разные движки и особенно старые вам нужно от хостинга
    а) php5.2(если реально для него что-то есть) php5.3 php5.4 php5.6 php7.0 php7.1 php7.1 php7.2 php7.3 php7.4 - FastCGI или mod_apache, при этом 5.2-5.3 компилить прийдется уже их тарболов, поскольку в репках их нет
    б) php7.0 php7.1 php7.1 php7.2 php7.3 php7.4 - PHP-FPM - эти со всеми видами представлений одной командой.
    в) nginx +apache - поскольку в старых сайтах переписывать .htaccess на чичтый nginx+FPM это маразм.
    г) сказал бы что virusdie подключеный на каждый сайт, но они сделали ребрендинг и подняли цену в 100 раз так что не увольте.
    однако делать с виурсами что-то нужно
    так что
    будем делать с вирусами
    1. su_exec вкл выкл для сайта - запрещяет функцию exec для старых сайтов она как правило не нужна.
    2. опен бейс дир смысла ставить нет.
    3. нужна моментальная система отката для старых сайтов, возможно просто накатывать бэкап раз в месяц ( если сайты уже статичны) это дешевле чем разбираться с каждым из них постоянно.
    4. Взять большое файловое хранилище или яндекс облако или hetzner там дешевые 10 тб хранилищя, примонтировать их через clifs и бэкапить туда все раз в месяц, удалять раз в 5 лет, тоже по крону.
    отдельно папку для почищены от вирусов сайто которая лежит всегда, и если сайт по какой-то причине просрался то нужно чтоб был ооочень старый бэкап помима обычных. Желательно где-то еще.
    5. старым сайтам должна быть возможность отключить почту, это можно сделать через настройки апача, главное в морду вывести.
    что-то вроде
    disable_functions=exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,parse_ini_file,show_source,mail,apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, eval, fp, fput, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, syslog, system, xmlrpc_entity_decode, mail

    так же было бы неплохо собирать в лог файл какие конкретно файлы отправляют спам и с какой строки, поскольку это постояннго будет причиной бана адерсов, так что за этим нужно будет следить.
    mail.add_x_header = On
    mail.log = syslog
    В этом сулчае прям в сислог, но можн ои в отдельный файл, ну и в мониторинг его .
    Так же нужно будет следить за очередью почты, при резких пиках нужно будет реагировать.

    Возможно понадобятся curl mpdf zend_optimizer (php 5.2) zend guzrd_loader ( 5.3) ioncube.
    и тому подобные специические темы.

    лично я собираю все это на ispconfig 3
    плюс модуль nginx, плюс своя кастомка.
    600 сайтов полет нормальный.
    Так же было бы неплохо подключить какой-то антивирус и сканить систему что-то типа ai-bolit.php или веб серисы.
    НО у вас точно должна быть функция быстрого отката,а для совсем древиних сайтов так и по крону можно их ломают так часто что все вышесказанное мало поможет.
    для особо жопных сайтов можно перевести их в html
    хостинг должен поддерживать letsencrypt а так же нужно мониторить что сертификаты могут выдаться, как правило в 99% панелей если хоть один из сертификатов не выдался не выдадутся и остальные.

    Могу предожить vestacp
    braynicp
    biyrix vm
    все они ставятся с одного клика, у каждого есть свои плюсы и минусы.
    Ну или как вариант
    у яндекс в kubernetas есть возможность вобще бесплатно хостить html сайты, а для php сделать впс, там и бэкапы слайсов можно делать, и примонтировать местное храниллище.
    Ответ написан
  • Hosting to Hosting Редирект. Уменьшить расходы?

    по моему очевидный ответ у вас на сервере стоит nginx
    собственно он проксирует на бэк в henzner вот и все айпи у вас местный а сервер только проксирует. Пойдет любая помойка.
    А как сделать nginx в режиме proxy можете найти по первой же ссылке, его в 50% случаев так и используют.
    Там и балансеры и все че хочешь есть
    и да будет видно что nginx проксирует, но простите nginx+apache конфигурация сейчас самая популярная и он там тоже проксирует.
    А какой апстрим локальный или внешний узнать нереально. единственное во всех манах в интернете ошибка, уж не знаю какого ляда. Но проксируйте http-http https-https а не на http.
    Ответ написан
    1 комментарий
  • Нужно ли настраивать FastCGI?

    shambler81
    @shambler81 Куратор тега Linux
    лучше всего сделать PHP-FPM это тот же FastCGI но немного быстрей и главное он отдает статусы процессов апачу.
    Что касается настроек то особо улучшить производительность относительно стоковых вы не сможете там плюс минус 10% в производительности так что можно сказат что нет не нужно настраивать.
    Ответ написан
    Комментировать
  • TO_MANY_REDIRECTS при включении редиректа на https?

    https://klondike-studio.ru/standards/standartnyy-h...
    писал тут как сделать.
    Причина в том что все маны а как следствие и сервера в мире настроены с ошибкой и host при nginx+apache не сохраняется
    а заменяется и в результате этой дебильной схемы страдает js которому нужно знать на каком протоколе сейчас он находится, ну и редиректы поскольку хост не соответствует тому что нужно, в результате опять срабатывает правило редиректа.
    Короче все что вам нужно это подобрать редирект кторый подойдет на вашей конфигураци.
    Примеры я дал в ссылке
    ЧПУ битрикса разместить в самом конце
    Ответ написан
    1 комментарий
  • Раздельные пользователи для сайтов. Правильно ли я настроил nginx?

    shambler81
    @shambler81 Куратор тега Linux
    не не достаточно. В таком раскладе получается что если вирус поразит один из сайтов то ему хватит прав заразить и остальные.
    я разделяю все сайты даже одного клиента на разных владельцев и групп.
    В таком раскладе исключается даже теоретическая возможность поражения 1 вирусом двух сайтов ( в смысле через один доступ)
    А так же некоторым сайтам требуется разная версия окружения, от версии php до вида его представления. И даже веб сервера на котором это счастье болтаетя. именно по этому рекомендую вам все-же использовать панели
    Поскольку они хорошо убирают человеческий фактор из управления.
    Если же вам хочется поковыряться и разобраться то вам идеально подойдет ispconfig3 ( чем и и пользую) ( установка по ману)
    оч удобно.

    Если же не хочется паритьс но чтоб все работало то
    Bitrix VM - подойдет для любых сайтов ставится с 1 скрипта
    vestacp - ставится с 1 скрипта, при инсталяции есть выбор варианта сборки, так же в 1 скрипт.
    braynicp - дохрена умеет, реально дохрена неудобоный интерфейс проприетарная лицензия (но бесплатная). Но сап адекватный.
    Ответ написан