piterskiy

Config for Nginx

Feb 28th, 2019
18,365
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.   28.01.2019 Config   for    Nginx >= 1.11.10 https://habrahabr.ru/post/282554/
  2. #                         Полный мануал настройки http://pastebin.com/v0VKjKXW
  3. #
  4. #                               v 1.4.3 fast server http://vk.cc/7BSP3h
  5. #                               Рабочий вариант, кеширование работает ( + кеширование в оперативную память )
  6. #                               - 1.4.3 Исправление cookies, корректная работа с движками bitrix и wordpress
  7. #
  8. #
  9. # Nginx (Измения в версиях http://nginx.org/ru/CHANGES.ru ) port 80 -> Apache port 81
  10. # - !Settings! !ВАЖНО! прописать свой ip в местах где #Указать IP сервера \ Web.Server.IP      <<<<<-!!!
  11. # - Динамическое определение доменов(поддоменов) и их директорий, и алиасов. (Настроено под VestaCP, если не угодно - поменяйте)
  12. # - Максимальная производительность и оптимизация
  13. # - Защита картинок и файлов отдающихся nginx от хотлинкинга
  14. # - Защита от сторонних ботов, для снижения нагрузки
  15. # - SSl убран на apache2 , если надо сами настраивайте )
  16. #
  17. #Дополнительно: помещаем кэш nginx в ramdisk (tmpfs)
  18. #Сейчас у нас кэширование настроено, но кэш хранится на жестком диске, что не является хорошим решение. Оптимальнее будет смонтировать директорию с кэшем nginx в память.
  19. #Для этого откроем
  20. #nano/etc/fstab
  21. #и добавим туда:
  22. #tmpfs /var/lib/nginx/cache tmpfs nodev,nosuid,size=20M 0 0
  23. #Если в настройках nginx вы указали больший размер кэша, то параметр size необходимо изменить в соответствии с указанным размером кэша (max_size), плюс небольшой запас.
  24. #Сразу смонтируем директорию в память:
  25. #sudo mount -a
  26. #service nginx restart; service apache2 restart; reboot;
  27. #Теперь при каждой загрузке системы, директория /var/lib/nginx/cache будет помещаться в память, что должно уменьшить время отдачи страницы.
  28. #
  29. #  Test VPS !KVM  1x1024RAM 20Gb SSD
  30. ## ab -r -n 10000 -c 10000 http://site.com/
  31. #Failed requests:        0
  32. #Connection Times (ms)
  33. #              min  mean[+/-sd] median   max
  34. #Total:        530  644  66.0    646     758
  35. #################################################
  36.  
  37. ########## Server globals ######
  38. user www-data;  #имя пользователя от которого работает nginx
  39.  
  40. worker_processes    auto;
  41. worker_cpu_affinity auto;
  42.  
  43. timer_resolution 100ms;     #Уменьшает разрешение таймеров времени в рабочих процессах, за счёт чего уменьшается число системных вызовов
  44. worker_rlimit_nofile 65192; #Изменяет ограничение на максимальное число открытых файлов (RLIMIT_NOFILE) для рабочих процессов
  45. worker_priority -5;         #Выставляем более высокий приоритет процессу воркера
  46.  
  47. error_log               /var/log/nginx/error.log;
  48. pid                     /var/run/nginx.pid;
  49.  
  50.  
  51. ######### Worker config #######
  52. events {
  53.         worker_connections 20048;    # Максимальное количество подключений на процесс
  54.        use                epoll;
  55.        
  56.         accept_mutex off;
  57.       }
  58.  
  59. http {
  60.       #не более 2 запроса в секунду со всплесками не более 5 запросов.
  61.       limit_req_zone $binary_remote_addr zone=perip:10m rate=2r/s;
  62.       #не более 10 запросов в секунду.
  63.       limit_req_zone $server_name zone=perserver:10m rate=10r/s;
  64.      
  65.        map "$request_method" $block {  default 0; "~(HEAD|GET)" 1; "~POST" 2;}
  66.      
  67.        # менеджеры загрузки и некоторые типы ботов (update 15.10.2017)
  68.        map $http_user_agent $agent {default 0; "~AppEngine" 1; "~360Spider" 1; "~8484\ Boston\ Project" 1; "~Accelerator" 1; "~AESOP" 1; "~Ahrefs" 1; "~AhrefsBot" 1; "~Alexibot" 1; "~almaden" 1; "~Anarchie" 1; "~Anonymouse.org" 1; "~Ants" 1; "~ApacheBench" 1; "~Aport" 1; "~AppEngine" 1; "~Applebot" 1; "~Aqua_Products" 1; "~archive" 1; "~Ask\ Jeeves" 1; "~ASPSeek" 1; "~asterias" 1; "~Atomic_Email_Hunter" 1; "~atSpider" 1; "~attach" 1; "~autoemailspider" 1; "~b2w" 1; "~BackDoorBot" 1; "~BackWeb" 1; "~BaiduBot" 1; "~Baiduspider" 1; "~bandit" 1; "~Bandit" 1; "~BatchFTP" 1; "~Bigfoot" 1; "~Birubot" 1; "~Black\ Hole" 1; "~BlackWidow" 1; "~BLEXBot" 1; "~BlowFish" 1; "~Bookmark\ search\ tool" 1; "~BotALot" 1; "~bsalsa" 1; "~Buddy" 1; "~BuiltBotTough" 1; "~BullsEye" 1; "~bumblebee" 1; "~BunnySlippers" 1; "~Butterfly" 1; "~Buzzbot" 1; "~BuzzSumo" 1; "~bwh3_user_agent" 1; "~CamontSpider" 1; "~CCBot" 1; "~Cegbfeieh" 1; "~CheeseBot" 1; "~CherryPicker" 1; "~China" 1; "~ChinaClaw" 1; "~CICC" 1; "~clsHTTP" 1; "~coccoc" 1; "~Collector" 1; "~CommentReader" 1; "~ContactBot" 1; "~ContentSmartz" 1; "~Copernic" 1; "~Copier" 1; "~CopyRightCheck" 1; "~cosmos" 1; "~crazy" 1; "~Crescent" 1; "~сurl" 1; "~Сurl" 1; "~Custo" 1; "~DataCha0s" 1; "~dataminr" 1; "~DBrowse" 1; "~Demo\ Bot" 1; "~DeuSu" 1; "~Digincore" 1; "~DIIbot" 1; "~DISCo" 1; "~discobot" 1; "~Dispatch" 1; "~dit" 1; "~DittoSpyder" 1; "~Dolphin" 1; "~DomainSigma" 1; "~DomainTools" 1; "~DotBot" 1; "~Download\ Demon" 1; "~Download\ Devil" 1; "~Download\ Wonder" 1; "~Downloader" 1; "~dragonfly" 1; "~Drip" 1; "~DSurf15" 1; "~DuckDuckGo" 1; "~EasyDL" 1; "~ebingbong" 1; "~EBrowse" 1; "~eCatch" 1; "~Educate\ Search\ VxB" 1; "~EirGrabber" 1; "~email" 1; "~EmailCollector" 1; "~EmailSiphon" 1; "~EmailSpider" 1; "~EmailWolf" 1; "~Embedly" 1; "~EroCrawler" 1; "~ESurf15" 1; "~Exabot" 1; "~Express\ WebPictures" 1; "~Extractor" 1; "~EyeNetIE" 1; "~Ezooms" 1; "~facebookexternalhit" 1; "~FairAd\ Client" 1; "~FairShare" 1; "~Faraday" 1; "~Favicon" 1; "~Feed
  69.       er" 1; "~FileHound" 1; "~filterdb" 1; "~Flaming\ AttackBot" 1; "~FlashGet" 1; "~FlaxCrawler" 1; "~Flexum" 1; "~FlightDeckReportsBot" 1; "~FlipboardProxy" 1; "~flunky" 1; "~Foobot" 1; "~Franklin\ Locator" 1; "~FrontPage" 1; "~FSurf15" 1; "~Full\ Web\ Bot" 1; "~FyberSpider" 1; "~Gaisbot" 1; "~getintent" 1; "~getprismatic" 1; "~GetRight" 1; "~Gets" 1; "~GetSmart" 1; "~GetWeb!" 1; "~gigabaz" 1; "~Gigabot" 1; "~Go 1.1 package" 1; "~Go!Zilla" 1; "~Go-Ahead-Got-It" 1; "~Go-http-client" 1; "~gold crawler" 1; "~gold\ crawler" 1; "~gotit" 1; "~GoZilla" 1; "~Grabber" 1; "~GrabNet" 1; "~GrabSite" 1; "~Grafula" 1; "~GrapeshotCrawler" 1; "~grub" 1; "~grub-client" 1; "~gsa-crawler" 1; "~Guestbook\ Auto\ Submitter" 1; "~Gulliver" 1; "~Harvest" 1; "~help.jp" 1; "~hloader" 1; "~HMView" 1; "~HTMLParser" 1; "~httpdown" 1; "~httplib" 1; "~httrack" 1; "~HTTrack" 1; "~humanlinks" 1; "~hybrid" 1; "~ia_archiver" 1; "~IBrowse" 1; "~IlseBot" 1; "~Image\ Stripper" 1; "~Image\ Sucker" 1; "~Industry\ Program" 1; "~Indy Library" 1; "~Indy\ Library" 1; "~InfoNaviRobot" 1; "~InfoSeek" 1; "~InfoTekies" 1; "~inktomi" 1; "~Intelliseek" 1; "~InterGET" 1; "~Internet\ Ninja" 1; "~InternetLinkagent" 1; "~InternetSeer" 1; "~Iria" 1; "~Iron33" 1; "~ISC\ Systems" 1; "~IUPUI\ Research\ Bot" 1; "~Jakarta" 1; "~Java" 1; "~JBH\ agent" 1; "~JennyBot" 1; "~jetcar" 1; "~JetCar" 1; "~JOC" 1; "~JS-Kit" 1; "~JustView" 1; "~Jyxobot" 1; "~Kenjin\ Spider" 1; "~Keyword\ Density" 1; "~km.ru" 1; "~kmSearchBot" 1; "~Kraken" 1; "~larbin" 1; "~Laserlikebot" 1; "~leech" 1; "~LeechFTP" 1; "~Leikibot" 1; "~LetsCrawl.com" 1; "~LexiBot" 1; "~lftp" 1; "~libWeb" 1; "~libwww" 1; "~Lightspeedsystems" 1; "~likse" 1; "~Lincoln\ State\ Web\ Browser" 1; "~Linguee" 1; "~LinkBot" 1; "~linkdexbot" 1; "~LinkExchanger" 1; "~LinkextractorPro" 1; "~linkfluence" 1; "~LinkpadBot" 1; "~LinkScan" 1; "~LinkSleuth" 1; "~LinkWalker" 1; "~liveinternet" 1; "~LivelapBot" 1; "~LMQueueBot" 1; "~LNSpiderguy" 1; "~LoadImpactPageAnalyzer" 1; "~looksmart" 1; "~ltx71" 1; "~LWP" 1; "~lwp-trivial" 1; "~Mac\ Finder" 1; "~Magnet" 1; "~Mag-Net" 1; "~majestic" 1; "~MarkWatch" 1; "~Mass\ Downloader" 1; "~masscan" 1; "~Mata\ Hari" 1; "~meanpathbot" 1; "~Mediatoolkitbot" 1; "~MegaIndex" 1; "~Memo" 1; "~MetaURI" 1; "~MFC\ Foundation\ Class\ Library" 1; "~mfibot" 1; "~Microsoft\ URL\ Control" 1; "~MIDown\ tool" 1; "~MIIxpc" 1; "~Mirror" 1; "~Missauga\ Loca" 1; "~Missouri\ College\ Browse" 1; "~Mister\ PiX" 1; "~Mizzu\ Labs" 1; "~MJ12bot" 1; "~MLBot" 1; "~Mo\ College" 1; "~moget" 1; "~Mozilla\ Indy" 1; "~Mozilla\ MSIECrawler" 1; "~Mozilla\ NEWT" 1; "~MS\ FrontPage" 1; "~MSFrontPage" 1; "~MSIECrawler" 1; "~MSProxy" 1; "~musobot" 1; "~MVAClient" 1; "~NameOfAgent" 1; "~NAMEPROTECT" 1; "~NASA\ Search" 1; "~Navroad" 1; "~NearSite" 1; "~NerdByNature" 1; "~Net\ Vampire" 1; "~NetAnts" 1; "~Netcraft" 1; "~NetMechanic" 1; "~NetReaper" 1; "~NetSeer" 1; "~NetSpider" 1; "~NetZIP" 1; "~NewShareCounts" 1; "~NextGenSearchBot" 1; "~NICErsPRO" 1; "~NimbleCrawler" 1; "~NING" 1; "~Ninja" 1; "~NjuiceBot" 1; "~NPbot" 1; "~Nsauditor" 1; "~Nutch" 1; "~Nuzzel" 1; "~Octopus" 1; "~Offline" 1; "~Offline\ Explorer" 1; "~Offline\ Navigator" 1; "~omgili" 1; "~omgilibot" 1; "~OmniExplorer_Bot" 1; "~Openbot" 1; "~Openfind" 1; "~OpenHoseBot" 1; "~openstat" 1; "~openstat.ru" 1; "~OptimizationCrawler" 1; "~Oracle\ Ultra\ Search" 1; "~OutfoxBot" 1; "~PageGrabber" 1; "~PageSaver" 1; "~Panopta" 1; "~Papa\ Foto" 1; "~PaperLiBot" 1; "~pavuk" 1; "~PBrowse" 1; "~pcBrowser" 1; "~PerMan" 1; "~PEval" 1; "~pflab" 1; "~PHP" 1; "~PHP/" 1; "~Ping" 1; "~PingALink" 1; "~Pingdom" 1; "~pirst" 1; "~Pita" 1; "~Pockey" 1; "~Poirot" 1; "~Port\ Huron\ Labs" 1; "~postano" 1; "~PostRank" 1; "~PrivacyAware" 1; "~Production\ Bot" 1; "~Program\ Shareware" 1; "~ProPowerBot" 1; "~ProWebWalker" 1; "~proximic" 1; "~psbot" 1; "~PSurf15" 1; "~psycheclone" 1; "~ptd-crawler" 1; "~Pump" 1; "~Purebot" 1; "~PycURL" 1; "~Python" 1; "~python-requests" 1; "~Python-urllib" 1; "~QRVA" 1; "~QueryN\ Metasearch" 1; "~QuerySeekerSpider" 1; "~Radiation\ Retriever" 1; "~RealDownload" 1; "~Reaper" 1; "~Recorder" 1; "~ReGet" 1; "~RepoMonkey" 1; "~Riddler" 1; "~RMA" 1; "~rogerbot" 1; "~RSurf15" 1; "~Ruby" 1; "~Runet-Research-Crawler" 1; "~SafeSearch" 1; "~Scooter" 1; "~Scrapy" 1; "~SearchBot" 1; "~searchpreview" 1; "~searchvoodoo" 1; "~Seeker" 1; "~semantic" 1; "~SemrushBot" 1; "~SEO\ search\ Crawler" 1; "~Seopult" 1; "~SEOsearch" 1; "~SetLinks" 1; "~SeznamBot" 1; "~ShablastBot" 1; "~Siphon" 1; "~SISTRIX" 1; "~SiteBot" 1; "~sitecheck" 1; "~SiteSnagger" 1; "~Slurp" 1; "~SlySearch" 1; "~SmartDownload" 1; "~SMTBot" 1; "~SMUrlExpander" 1; "~Snagger" 1; "~Snake" 1; "~snap.com" 1; "~Snapbot" 1; "~SNAPSHOT" 1; "~Snoopy" 1; "~socialmediascanner" 1; "~sogou" 1; "~Sogou" 1; "~sohu\ agent" 1; "~solomono" 1; "~Soup" 1; "~SpaceBison" 1; "~SpankBot" 1; "~spanner" 1; "~spbot" 1; "~spredbot" 1; "~sproose" 1; "~Sqworm" 1; "~SSurf15" 1; "~statdom" 1; "~StatOnlineRuBot" 1; "~Stripper" 1; "~Sucker" 1; "~suggybot" 1; "~SuperBot" 1; "~Superfeedr" 1; "~SuperHTTP" 1; "~Surfbot" 1; "~SurveyBot" 1; "~suzuran" 1; "~SWeb" 1; "~Synapse" 1; "~Szukacz" 1; "~tAkeOut" 1; "~Teleport" 1; "~Telesoft" 1; "~The\ Intraformant" 1; "~TheNomad" 1; "~TightTwatBot" 1; "~Titan" 1; "~toCrawl" 1; "~trendictionbot" 1; "~Triton" 1; "~True_Robot" 1; "~TSearcher" 1; "~TSurf15" 1; "~ttCrawler" 1; "~turingos" 1; "~TurnitinBot" 1; "~TweetmemeBot" 1; "~Twiceler" 1; "~ubermetrics" 1; "~Under\ the\ Rainbow" 1; "~UnwindFetchor" 1; "~URL\ Control" 1; "~UrlDispatcher" 1; "~urllib" 1; "~URLSpiderPro" 1; "~URLy\ Warning" 1; "~User-Agent" 1; "~uTorrent" 1; "~Vacuum" 1; "~VadixBot" 1; "~VCI" 1; "~veoozbot" 1; "~virus\ bot" 1; "~Virusdie" 1; "~VoidEYE" 1; "~voyager" 1; "~Voyager" 1; "~W3\ SiteSearch\ Crawler" 1; "~W3C" 1; "~Wayback Machine" 1; "~WBSearchBot" 1; "~Weazel" 1; "~Web\ Downloader" 1; "~Web\ Image\ Collector" 1; "~Web\ Spy" 1; "~Web\ Sucker" 1; "~WebAlta" 1; "~WebAuto" 1; "~Webbandit" 1; "~WebBandit" 1; "~WebCapture" 1; "~Webclipping.com" 1; "~webcollage" 1; "~WebCopier" 1; "~WebEMailExtrac" 1; "~WebEnhancer" 1; "~WebFetch" 1; "~WebGo\ IS" 1; "~WebHook" 1; "~WebLeacher" 1; "~weblist" 1; "~WebmasterWorld" 1; "~WebMiner" 1; "~WebMirror" 1; "~WebReaper" 1; "~WebRecorder" 1; "~WebSauger" 1; "~WebSite" 1; "~Website\ eXtractor" 1; "~Website\ Quester" 1; "~WebSpy" 1; "~Webster" 1; "~WebStripper" 1; "~WebVulnCrawl" 1; "~WebWhacker" 1; "~WebZIP" 1; "~wegobot" 1; "~Wells\ Search" 1; "~WEP\ Search" 1; "~Wget" 1; "~Whacker" 1; "~Widow" 1; "~Windows\ 95" 1; "~WISENutbot" 1; "~WordPress" 1; "~woriobot" 1; "~WWW-Collector-E" 1; "~WWWOFFLE" 1; "~Xaldon" 1; "~Xenu" 1; "~Xenu's" 1; "~x-Tractor" 1; "~Yanga" 1; "~Yeti" 1; "~YottosBot" 1; "~Zeus" 1; "~Zeus\ Link\ Scout" 1; "~zitebot" 1; "~ZmEu" 1; "~Zyborg" 1;}
  70.            
  71.        # Mime settings
  72.        include             /etc/nginx/mime.types;
  73.        default_type        application/octet-stream;
  74.    
  75.        # Main settings
  76.        
  77.         #При одновременном включении AIO и sendfile в Linux для файлов, размер которых больше либо равен указанному в директиве directio, будет использоваться AIO,
  78.         #а для файлов меньшего размера или при выключенном directio — sendfile
  79.         #Если нужна большая производительность, нужен собранный nginx с флагом --with-threads https://habrahabr.ru/post/260669/
  80.         sendfile       on;
  81.         sendfile_max_chunk 256k;
  82.         tcp_nopush     on;
  83.         tcp_nodelay    on;
  84.            
  85.         # Таймаут при чтении тела запроса клиента
  86.         client_body_timeout   5;
  87.         # Таймаут при чтении заголовка запроса клиента
  88.         client_header_timeout 5;
  89.         #Таймаут соединения позволяют избежать необходимости повторного создания соединения между клиентом и сервером.
  90.         keepalive_timeout  15 2;
  91.         # Максимальное количество keepalive запросов от одного клиента
  92.         keepalive_requests 100;
  93.         # Если клиент прекратит чтение ответа, Nginx подождет 1 секунду и сбросит соединение
  94.         send_timeout 1;
  95.  
  96.                 # Максимальный размер буфера для хранения тела запроса клиента
  97.                 client_body_buffer_size 10K;
  98.                 # Максимальный размер буфера для хранения заголовков запроса клиента
  99.                 client_header_buffer_size 5k;
  100.                 # Максимальный размер тела запроса клиента, прописанный в поле Content-Length заголовка.
  101.                 # Если сервер должен поддерживать загрузку         файлов, это значение необходимо увеличить
  102.                 client_max_body_size 8m;
  103.                 # Количество и размер буферов для чтения большого заголовка запроса клиента
  104.                 large_client_header_buffers 2 5k;
  105.                 reset_timedout_connection on;
  106.                    
  107.                 server_tokens                   off;
  108.                 server_name_in_redirect         off;
  109.                 server_names_hash_max_size      512;
  110.                 server_names_hash_bucket_size   512;
  111.                        
  112.                 # Proxy settings
  113.                 proxy_redirect          off;
  114.                 proxy_connect_timeout   600;
  115.                 proxy_send_timeout      600;
  116.                 proxy_read_timeout      600;
  117.                 proxy_buffering on;
  118.                 proxy_buffers 4 256k;
  119.                 proxy_buffer_size 256k;
  120.                 proxy_busy_buffers_size 256k;
  121.        
  122.              # Cache
  123.              #/с версии 0.7.48 Исправление: теперь nginx кэширует только ответы на запросы GET./
  124.              proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=cache:10m inactive=10m max_size=15m; #inactive Время хранения данных с последнего обращения
  125.              proxy_temp_path /var/lib/nginx/proxy 1 2;
  126.              proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri"; # Гарантируем, что разные пользователи не получат одну и ту же сессионную Cookie.
  127.              #proxy_cache_min_uses 5; # Количество юзеров после которого включим кеширование
  128.              proxy_set_header Accept-Encoding "";
  129.              
  130. upstream backend {
  131.  
  132. hash $remote_addr$remote_port consistent;
  133.  
  134. server 127.0.0.1:81;
  135.  
  136. #Указать IP сервера \ Web.Server.IP
  137. server 195.123.211.109:81;
  138.            }
  139.  
  140. ############################## SERVER ####################################      
  141.     server {  
  142.     listen 80 reuseport; # Слушаем 80 порт listen for ipv4
  143.    
  144.     add_header X-Cache $upstream_cache_status;
  145.    
  146.    
  147.     # Перенаправление всех не найденных файлов в апач
  148.     error_page 404 502 503 504 = @apache2;
  149.    
  150.     ##################### Cache #######################
  151.      set $no_cache 0;
  152.      #Don't cache if the URL contains a query string
  153.      if ($query_string != "")
  154.      {     set $no_cache 1;     }
  155.      #Don't cache the following URLs
  156.      if ($request_uri ~* "/(wp-admin/|admin/|administrator/|login.php|phpmyadmin)")
  157.      {     set $no_cache 1;     }
  158.      #Don't cache if there is a cookie called session (! php.ini   session.name = session )
  159.      if ($http_cookie = "session")     {     set $no_cache 1;     }
  160.  
  161.     ############################################
  162.  
  163.    
  164.             limit_req zone=perserver burst=10;
  165.             #со всплесками не более 5 запросов.
  166.             limit_req zone=perip burst=5 nodelay;
  167.            
  168.             #Блокируем запросы кроме HEAD POST GET
  169.             if ($block = 0) { return 444;}            
  170.             # Блокируем менеджеры загрузки и некоторые типы ботов (update 15.10.2017)
  171.             if ($agent = 1) { return 403;}
  172.  
  173.             #выставляем принудительно кодировку всех документов
  174.             charset utf-8;
  175.            
  176.                        #########################Динамическое определение доменов и поддоменов###################################
  177.                        #!Путь до папки с сайтом как в Vesta СP /home/admin/web/domen.ru/public_html/
  178.                        #Если нужные другие пути, они редактируются в строка помеченных #1
  179.                        set $basepath "/home/admin/web"; #1
  180.                        set $domain $host;
  181.                        
  182.                        if ($domain ~ "^(.[^.]*)$") {
  183.                                set $domain $1;
  184.                                set $rootpath "${domain}/public_html/"; #1
  185.                                set $servername "${domain}";
  186.                        }
  187.                        if ($domain ~ "^(.*)\.(.[^.]*)$") {
  188.                                set $subdomain $1;
  189.                                set $domain $2;
  190.                                set $rootpath "${subdomain}.${domain}/public_html/"; #1
  191.                                set $servername "${subdomain}.${domain}";
  192.                        }
  193.                        #Отключена ошибка 404 при отсутствии директории для  работы алисов доменов и адресов вида ip
  194.                        #if (!-d $basepath/$rootpath) { return 404;  }
  195.                        
  196.                         #Редирект с www на без www
  197.                        if ($http_host ~* "^www\.(.+)\.(.+)$"){  #Запоминаем хост без www из предыдущего выражения в переменной $nowww
  198.                        set $nowww $1.$2;
  199.                        #Делаем 301 редирект (permanent) .В $request_uri - адрес без хоста со всеми GET параметрами. После $request_uri добавляем '?' чтобы GET параметры  не добавились дважды (по умолчанию)
  200.                        rewrite ^ http://$nowww$request_uri? permanent; }
  201.                        #########################//////////////////////###########################################################
  202.                        
  203.                        server_name $servername;
  204.        
  205.                        index index.php index.html index.htm;
  206.        
  207.                        root $basepath/$rootpath; # Директория поиска файлов
  208.                        
  209.                        ###########################################################################################################
  210.  
  211.              #wordpress        
  212.              location ~* ^/wordpress/(wp-config.php) {
  213.              deny all;       # запретить все для всех
  214.              return 404;     # вернуть код ошибки
  215.              }
  216.              
  217.               # bitrix internal locations
  218.               location ~* ^/bitrix/(modules|local_cache|stack_cache|managed_cache|php_interface) {
  219.               deny all;
  220.               }
  221.  
  222.               #запрещается доступ к выполнению скриптов из записываемых каталогов:
  223.               location ~* /(uploads|images|cache|media|logs|tmp)/.*.(php|pl|py|jsp|asp|sh|cgi)$ {  deny all; }    
  224.                            
  225.               # в файлах, начинающихся на «.» могут лежать пароли или оставшиеся настройки от Апача - отдавать это ни к чему.
  226.               location ~ /\. { deny all;}                            
  227.  
  228.             # Закрыт доступ к txt и db файлам
  229.             location ~* ^.+\.(db|txt)$ { deny all; }
  230.             # Открыт доступ к robots.txt u favicon
  231.             location = /robots.txt     { allow all; log_not_found off;      access_log off; }
  232.             location = /favicon.ico    { allow all; log_not_found off;      access_log off; }
  233.  
  234.              # phpmyadmin
  235.             location ^/phpmyadmin {    alias /usr/share/phpmyadmin/;
  236.             location ~ /(libraries|setup) {        return 404;    }
  237.  
  238.             location ~ ^/phpmyadmin/(.*\.php)$ {
  239.             alias /usr/share/phpmyadmin/$1;
  240.             proxy_pass http://backend;                                  }
  241.             location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {        root /usr/share/;    }
  242.            } #/phpmyadmin
  243.  
  244.                  # Эта секция отвечает за местонахождение и типы статичных файлов, обрабатываемых Nginx.
  245.                  # Вы можете добавить по аналогии расширения файлов, которые будут отдаваться Nginx'ом.
  246.                  # Динамические файлы мы будем отсылать на Apache
  247.                  location ~* ^.+\.(bmp|jpg|jpeg|gif|png|svg|js|css|html|htm|ico|pdf|pptx?|docx?|xlsx?|rtf|xpi|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
  248.                  access_log off; # не пишем логи
  249.                  # кешируем у клиента на 7 дней
  250.                   expires 7d;
  251.                            #Защита от хотлинкинга , указанных поисковых сайтов и соцсетей  
  252.                            #Хитрая проверка на свой сайт, ввиду того что динамика и сайты у нас разные
  253.                            #Спасибо автору Maxim Dounin http://nginx.org/en/donation.html
  254.                            set $temp "$host:$http_referer";
  255.                            if ($temp ~* "^(.*):https?://\1") { set $invalid_referer "0"; }
  256.                            
  257.                              #Разрешено поисковым сайтам и соцсетям отображать у себя картинки и прочие файлы
  258.                              valid_referers none blocked server_names ~(duckduckgo|yandex|google|yahoo|bing|ok|twitter|vk|facebook|subscribe|feedburner|mail|rambler|nigma|ask|qip);
  259.                              if ($invalid_referer) {
  260.                              return 403;
  261.                              #сюда можно засунуть вместо retunr 403 свою картинку
  262.                              #rewrite ^(.*)$ http://blogsisadmina.ru/wp-content/uploads/2015/11/26.jpg redirect;
  263.                              
  264.                              }
  265.                           #
  266.                 #Повторный запрос при ошибке
  267.                 error_page 404 502 503 504 = @apache2;
  268.                 try_files $uri @apache2;
  269.                        
  270.                 }
  271.  
  272.                    
  273.                                      
  274.                  location / {
  275.                  try_files $uri @apache2;
  276.                  proxy_pass http://backend;
  277.                  proxy_cache cache;
  278.                  proxy_redirect off;
  279.                  proxy_set_header    Host            $host;
  280.                  proxy_set_header    X-Real-IP       $remote_addr;
  281.                  proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;              
  282.                   proxy_cache_revalidate on;
  283.                   proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
  284.                   proxy_cache_valid 200 301 302 304 5m; #Время хранения данных в кеше
  285.                   proxy_cache_valid 404 1m;
  286.                  
  287.                   proxy_cache_bypass $no_cache;
  288.                   proxy_no_cache $no_cache;
  289.                  proxy_ignore_headers "Cache-Control" "Expires";
  290.                  
  291.                             #proxy_cache_purge Функция в платной подписке(
  292.                             #can rename PURGE to whatever you want, should restrict it to backend server requests for security
  293.                             #proxy_cache_purge PURGE from 127.0.0.1 Web.Server.IP; #Указать IP сервера \ Web.Server.IP (~from 127.0.0.1 xxx.xxx.xxx.xxx)
  294.                            
  295.                               #location ~ /purge(/.*) {
  296.                               #allow 127.0.0.1;
  297.                               #allow Web.Server.IP;
  298.                               #deny all;
  299.                               #proxy_cache_purge cache $scheme$host$1;}
  300.                                              
  301.                   error_page 404 502 503 504 = @apache2;                          
  302.                  }
  303.  
  304.                 location @apache2 {
  305.                 proxy_pass http://backend;
  306.                 proxy_set_header Host $host;
  307.                 proxy_set_header X-Real-IP $remote_addr;
  308.                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  309.                 }                
  310.                
  311.                   # Wildcard include / Закоментили(отключили) дополнительные настройки
  312.                   #include          /etc/nginx/conf.d/*.conf;      
  313.  
  314.      } #/server
  315.  
  316.     # SSL PCI Compliance
  317.     ssl_session_cache   shared:SSL:10m;
  318.     ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
  319.     ssl_prefer_server_ciphers on;
  320.     ssl_ciphers        "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
  321.        
  322.     # Error pages / Страницы ошибок / Пути под Vesta CP
  323.     error_page          403          /home/admin/web/$host/document_errors/403.html;
  324.     error_page          404          /home/admin/web/$host/document_errors/404.html;
  325.     error_page          502 503 504  /home/admin/web/$host/document_errors/50x.html;
  326.        
  327. ################## Настройки GZIP###########################
  328.        # http/ngx_http_gzip_module.html
  329.         gzip               on;
  330.         gzip_static        on;
  331.         gzip_min_length  1024;
  332.         gzip_buffers    64 8k;
  333.         gzip_http_version 1.1;
  334.         # Разрешает или запрещает сжатие ответа методом gzip для проксированных запросов в зависимости от запроса и ответа.
  335.         gzip_proxied     expired no-cache no-store private auth;
  336.         # Разрешает сжатие ответа методом gzip для указанных MIME-типов в дополнение к text/html, который сжимается всегда.
  337.         gzip_types          text/plain text/css application/x-javascript application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml application/x-font-ttf font/opentype;
  338.         # Запрещаем сжатие gzip для IE6. Специальная маска “msie6” (0.7.12) соответствует рег. выражению “MSIE [4-6]\.”, но работает быстрее. Начиная с версии 0.8.11, из этой маски исключается “MSIE 6.0; ... SV1”.
  339.         gzip_disable     "msie6";
  340.         # Уровень gzip-компрессии.
  341.         gzip_comp_level    5;
  342.         gzip_proxied     any;
  343.  
  344.  
  345.                   aio on; # включаем AIO          
  346.                   # Директива автоматически запрещает (0.7.15) использование sendfile для данного запроса. Рекомендуется использовать для больших файлов
  347.                   directio       1m;
  348.  
  349.     # Log format
  350.     log_format  main    '$remote_addr - $remote_user [$time_local] $request '
  351.                         '"$status" $body_bytes_sent "$http_referer" '
  352.                         '"$http_user_agent" "$http_x_forwarded_for"';
  353.     log_format  bytes   '$body_bytes_sent';
  354.     access_log          /var/log/nginx/access.log  main;
  355.     #access_log off;        
  356.                          
  357. }#/http
Advertisement
Add Comment
Please, Sign In to add comment