Advertisement
djyarik

Config Nginx 2020! nginx.conf manual

Feb 26th, 2017
2,187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 31.25 KB | None | 0 0
  1. # Ctl+A, Ctrl+C  open /etc/nginx/nginx.conf , Ctrl+V, Ctrl+S. Have a nice day!
  2. #  01.17.2020 Config   for    Nginx >= 1.12.10 https://nginx.org/ru/download.html
  3. #                             Полный мануал настройки http://pastebin.com/v0VKjKXW
  4. #
  5. #                               fast server Cервера здесь берем http://vk.cc/7BSP3h  (Топовая техподдержка в комплекте!)
  6. #
  7. #                               Рабочий вариант, кеширование работает ( + кеширование в оперативную память )
  8. #                               - 1.4.3 Исправление cookies (/home/admin/tmp), корректная работа с движками bitrix и wordpress
  9. #
  10. #
  11. # Nginx (Измения в версиях http://nginx.org/ru/CHANGES.ru ) port 80 -> Apache port 81
  12. # # - !Settings! !ВАЖНО! прописать свой ip в местах где #Указать IP сервера \ Web.Server.IP      <<<<<-!!!
  13. # - Динамическое определение доменов(поддоменов) и их директорий, и алиасов. (Настроено под VestaCP, если не угодно - поменяйте)
  14. # - Максимальная производительность и оптимизация
  15. # - Защита картинок и файлов отдающихся nginx от хотлинкинга
  16. # - Защита от сторонних ботов, для снижения нагрузки
  17. # - SSl убран на apache2 , если надо сами настраивайте )
  18. #
  19. #Дополнительно: помещаем кэш nginx в ramdisk (tmpfs)
  20. #Сейчас у нас кэширование настроено, но кэш хранится на жестком диске, что не является хорошим решение. Оптимальнее будет смонтировать директорию с кэшем nginx в память.
  21. #Для этого откроем
  22. #nano/etc/fstab
  23. #и добавим туда:
  24. #tmpfs /var/lib/nginx/cache tmpfs nodev,nosuid,size=20M 0 0
  25. #Если в настройках nginx вы указали больший размер кэша, то параметр size необходимо изменить в соответствии с указанным размером кэша (max_size), плюс небольшой запас.
  26. #Сразу смонтируем директорию в память:
  27. #sudo mount -a
  28. #service nginx restart; service apache2 restart; reboot;
  29. #Теперь при каждой загрузке системы, директория /var/lib/nginx/cache будет помещаться в память, что должно уменьшить время отдачи страницы.
  30. #
  31. #  Test VPS !KVM  1x1024RAM 20Gb SSD
  32. ## ab -r -n 10000 -c 10000 http://site.com/
  33. #Failed requests:        0
  34. #Connection Times (ms)
  35. #              min  mean[+/-sd] median   max
  36. #Total:        530  644  66.0    646     758
  37. #################################################
  38.  
  39. ########## Server globals ######
  40. user www-data;  #имя пользователя от которого работает nginx так же и апач
  41.  
  42. worker_processes    auto;
  43. worker_cpu_affinity auto;
  44.  
  45. timer_resolution 100ms;     #Уменьшает разрешение таймеров времени в рабочих процессах, за счёт чего уменьшается число системных вызовов
  46. worker_rlimit_nofile 65192; #Изменяет ограничение на максимальное число открытых файлов (RLIMIT_NOFILE) для рабочих процессов
  47. worker_priority -5;         #Выставляем более высокий приоритет процессу воркера
  48.  
  49. error_log               /var/log/nginx/error.log;
  50. pid                     /var/run/nginx.pid;
  51.  
  52.  
  53. ######### Worker config #######
  54. events {
  55.         worker_connections 20048;    # Максимальное количество подключений на процесс
  56.       use                epoll;
  57.        
  58.         accept_mutex off;
  59.       }
  60.  
  61. http {
  62.      
  63.      
  64.        map "$request_method" $block {  default 0; "~(HEAD|GET)" 1; "~POST" 2;}
  65.      
  66.        # менеджеры загрузки и некоторые типы ботов (update 15.10.2017)
  67.       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
  68.      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;}
  69.            
  70.        # Mime settings
  71.       include             /etc/nginx/mime.types;
  72.        default_type        application/octet-stream;
  73.    
  74.        # Main settings
  75.      
  76.         #При одновременном включении AIO и sendfile в Linux для файлов, размер которых больше либо равен указанному в директиве directio, будет использоваться AIO,
  77.        #а для файлов меньшего размера или при выключенном directio — sendfile
  78.        #Если нужна большая производительность, нужен собранный nginx с флагом --with-threads https://habrahabr.ru/post/260669/
  79.        sendfile       on;
  80.         sendfile_max_chunk 256k;
  81.         tcp_nopush     on;
  82.         tcp_nodelay    on;
  83.            
  84.         # Таймаут при чтении тела запроса клиента
  85.        client_body_timeout   5;
  86.         # Таймаут при чтении заголовка запроса клиента
  87.        client_header_timeout 5;
  88.         #Таймаут соединения позволяют избежать необходимости повторного создания соединения между клиентом и сервером.
  89.        keepalive_timeout  15 2;
  90.         # Максимальное количество keepalive запросов от одного клиента
  91.        keepalive_requests 100;
  92.         # Если клиент прекратит чтение ответа, Nginx подождет 1 секунду и сбросит соединение
  93.        send_timeout 1;
  94.  
  95.                 # Максимальный размер буфера для хранения тела запроса клиента
  96.                client_body_buffer_size 10K;
  97.                 # Максимальный размер буфера для хранения заголовков запроса клиента
  98.                client_header_buffer_size 5k;
  99.                 # Максимальный размер тела запроса клиента, прописанный в поле Content-Length заголовка.
  100.                # Если сервер должен поддерживать загрузку         файлов, это значение необходимо увеличить
  101.                client_max_body_size 8m;
  102.                 # Количество и размер буферов для чтения большого заголовка запроса клиента
  103.                large_client_header_buffers 2 5k;
  104.                 reset_timedout_connection on;
  105.                    
  106.                 server_tokens                   off;
  107.                 server_name_in_redirect         off;
  108.                 server_names_hash_max_size      512;
  109.                 server_names_hash_bucket_size   512;
  110.                        
  111.                 # Proxy settings
  112.                proxy_redirect          off;
  113.                 proxy_connect_timeout   600;
  114.                 proxy_send_timeout      600;
  115.                 proxy_read_timeout      600;
  116.                 proxy_buffering on;
  117.                 proxy_buffers 4 256k;
  118.                 proxy_buffer_size 256k;
  119.                 proxy_busy_buffers_size 256k;
  120.        
  121.              # Cache
  122.             #/с версии 0.7.48 Исправление: теперь nginx кэширует только ответы на запросы GET./
  123.             proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=cache:10m inactive=10m max_size=15m; #inactive Время хранения данных с последнего обращения
  124.             proxy_temp_path /var/lib/nginx/proxy 1 2;
  125.              proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri"; # Гарантируем, что разные пользователи не получат одну и ту же сессионную Cookie.
  126.             #proxy_cache_min_uses 5; # Количество юзеров после которого включим кеширование
  127.             proxy_set_header Accept-Encoding "";
  128.              
  129. upstream backend {
  130.  
  131. hash $remote_addr$remote_port consistent;
  132.  
  133. server 127.0.0.1:81;
  134.  
  135. #Указать IP сервера \ Web.Server.IP
  136. server хх.хх.хх.хх:81;
  137.            }
  138.  
  139. ############################## SERVER ####################################      
  140.    server {  
  141.     listen 80 reuseport; # Слушаем 80 порт listen for ipv4
  142.    
  143.     add_header X-Cache $upstream_cache_status;
  144.    
  145.    
  146.     # Перенаправление всех не найденных файлов в апач
  147.    error_page 404 502 503 504 = @apache2;
  148.    
  149.     ##################### Cache #######################
  150.     set $no_cache 0;
  151.      #Don't cache if the URL contains a query string
  152.     if ($query_string != "")
  153.      {     set $no_cache 1;     }
  154.      #Don't cache the following URLs
  155.     if ($request_uri ~* "/(wp-admin/|admin/|administrator/|login.php|phpmyadmin)")
  156.      {     set $no_cache 1;     }
  157.      #Don't cache if there is a cookie called session (! php.ini   session.name = session )
  158.     if ($http_cookie = "session")     {     set $no_cache 1;     }
  159.  
  160.     ############################################
  161.  
  162.    
  163.                      
  164.             #Блокируем запросы кроме HEAD POST GET
  165.            if ($block = 0) { return 444;}            
  166.             # Блокируем менеджеры загрузки и некоторые типы ботов (update 15.10.2017)
  167.            if ($agent = 1) { return 403;}
  168.  
  169.             #выставляем принудительно кодировку всех документов
  170.            charset utf-8;
  171.            
  172.                        #########################Динамическое определение доменов и поддоменов###################################
  173.                       #!Путь до папки с сайтом как в Vesta СP /home/admin/web/domen.ru/public_html
  174.                       #Если нужные другие пути, они редактируются в строка помеченных #1
  175.                       set $basepath "/home/admin/web"; #1
  176.                       set $domain $host;
  177.                        
  178.                        if ($domain ~ "^(.[^.]*)$") {
  179.                                set $domain $1;
  180.                                set $rootpath "${domain}/public_html"; #1
  181.                               set $servername "${domain}";
  182.                        }
  183.                        if ($domain ~ "^(.*)\.(.[^.]*)$") {
  184.                                set $subdomain $1;
  185.                                set $domain $2;
  186.                                set $rootpath "${subdomain}.${domain}/public_html"; #1
  187.                               set $servername "${subdomain}.${domain}";
  188.                        }
  189.                        #Отключена ошибка 404 при отсутствии директории для  работы алисов доменов и адресов вида ip
  190.                       #if (!-d $basepath/$rootpath) { return 404;  }
  191.                      
  192.                         #Редирект с www на без www
  193.                       if ($http_host ~* "^www\.(.+)\.(.+)$"){  #Запоминаем хост без www из предыдущего выражения в переменной $nowww
  194.                       set $nowww $1.$2;
  195.                        #Делаем 301 редирект (permanent) .В $request_uri - адрес без хоста со всеми GET параметрами. После $request_uri добавляем '?' чтобы GET параметры  не добавились дважды (по умолчанию)
  196.                       rewrite ^ http://$nowww$request_uri? permanent; }
  197.                        #########################//////////////////////###########################################################
  198.                      
  199.                        server_name $servername;
  200.        
  201.                        index index.php index.html index.htm;
  202.        
  203.                        root $basepath/$rootpath; # Директория поиска файлов
  204.                      
  205.                        ###########################################################################################################
  206.  
  207.              #wordpress        
  208.             location ~* ^/wordpress/(wp-config.php) {
  209.              deny all;       # запретить все для всех
  210.             return 404;     # вернуть код ошибки
  211.             }
  212.              
  213.               # bitrix internal locations
  214.              location ~* ^/bitrix/(modules|local_cache|stack_cache|managed_cache|php_interface) {
  215.               deny all;
  216.               }
  217.  
  218.               #запрещается доступ к выполнению скриптов из записываемых каталогов:
  219.              location ~* /(uploads|images|cache|media|logs|tmp)/.*.(php|pl|py|jsp|asp|sh|cgi)$ {  deny all; }    
  220.                            
  221.               # в файлах, начинающихся на «.» могут лежать пароли или оставшиеся настройки от Апача - отдавать это ни к чему.
  222.              location ~ /\. { deny all;}                            
  223.  
  224.             # Закрыт доступ к txt и db файлам
  225.            location ~* ^.+\.(db|txt)$ { deny all; }
  226.             # Открыт доступ к robots.txt u favicon
  227.             location = /robots.txt     { allow all; log_not_found off;      access_log off; }
  228.             location = /favicon.ico    { allow all; log_not_found off;      access_log off; }
  229.  
  230.              # phpmyadmin
  231.            location ^/phpmyadmin {    alias /usr/share/phpmyadmin/;
  232.             location ~ /(libraries|setup) {        return 404;    }
  233.  
  234.             location ~ ^/phpmyadmin/(.*\.php)$ {
  235.             alias /usr/share/phpmyadmin/$1;
  236.             proxy_pass http://backend;                                  }
  237.             location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {        root /usr/share/;    }
  238.            } #/phpmyadmin
  239.  
  240.                  # Эта секция отвечает за местонахождение и типы статичных файлов, обрабатываемых Nginx.
  241.                 # Вы можете добавить по аналогии расширения файлов, которые будут отдаваться Nginx'ом.
  242.                 # Динамические файлы мы будем отсылать на Apache
  243.                 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)$ {
  244.                  access_log off; # не пишем логи
  245.                 # кешируем у клиента на 7 дней
  246.                  expires 7d;
  247.                            #Защита от хотлинкинга , указанных поисковых сайтов и соцсетей  
  248.                           #Хитрая проверка на свой сайт, ввиду того что динамика и сайты у нас разные
  249.                           #Спасибо автору Maxim Dounin http://nginx.org/en/donation.html
  250.                           set $temp "$host:$http_referer";
  251.                            if ($temp ~* "^(.*):https?://\1") { set $invalid_referer "0"; }
  252.                            
  253.                              #Разрешено поисковым сайтам и соцсетям отображать у себя картинки и прочие файлы
  254.                             valid_referers none blocked server_names ~(duckduckgo|yandex|google|yahoo|bing|ok|twitter|vk|facebook|subscribe|feedburner|mail|rambler|nigma|ask|qip);
  255.                              if ($invalid_referer) {
  256.                              #return 403;
  257.                              #сюда можно засунуть вместо retunr 403 свою картинку
  258.                             rewrite ^(.*)$ http://mtdata.ru/u3/photo3768/20520253260-0/original.jpg redirect;
  259.                            
  260.                              }
  261.                           #
  262.                #Повторный запрос при ошибке
  263.                error_page 404 502 503 504 = @apache2;
  264.                 try_files $uri @apache2;
  265.                        
  266.                 }
  267.  
  268.                    
  269.                                      
  270.                  location / {
  271.                  try_files $uri @apache2;
  272.                  proxy_pass http://backend;
  273.                  proxy_cache cache;
  274.                  proxy_redirect off;
  275.                  proxy_set_header    Host            $host;
  276.                  proxy_set_header    X-Real-IP       $remote_addr;
  277.                  proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;              
  278.                   proxy_cache_revalidate on;
  279.                   proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
  280.                   proxy_cache_valid 200 301 302 304 5m; #Время хранения данных в кеше
  281.                  proxy_cache_valid 404 1m;
  282.                  
  283.                   proxy_cache_bypass $no_cache;
  284.                   proxy_no_cache $no_cache;
  285.                  proxy_ignore_headers "Cache-Control" "Expires";
  286.                  
  287.                             #proxy_cache_purge Функция в платной подписке(
  288.                            #can rename PURGE to whatever you want, should restrict it to backend server requests for security
  289.                            #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)
  290.                            
  291.                               #location ~ /purge(/.*) {
  292.                              #allow 127.0.0.1;
  293.                              #allow Web.Server.IP;
  294.                              #deny all;
  295.                              #proxy_cache_purge cache $scheme$host$1;}
  296.                                              
  297.                   error_page 404 502 503 504 = @apache2;                          
  298.                  }
  299.  
  300.                 location @apache2 {
  301.                 proxy_pass http://backend;
  302.                 proxy_set_header Host $host;
  303.                 proxy_set_header X-Real-IP $remote_addr;
  304.                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  305.                 }                
  306.                
  307.                   # Wildcard include / Закоментили(отключили) дополнительные настройки
  308.                  #include          /etc/nginx/conf.d/*.conf;      
  309.  
  310.      } #/server
  311.  
  312.     # SSL PCI Compliance
  313.    ssl_session_cache   shared:SSL:10m;
  314.     ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
  315.     ssl_prefer_server_ciphers on;
  316.     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";
  317.        
  318.     # Error pages / Страницы ошибок / Пути под Vesta CP
  319.    error_page          403          /home/admin/web/$host/document_errors/403.html;
  320.     error_page          404          /home/admin/web/$host/document_errors/404.html;
  321.     error_page          502 503 504  /home/admin/web/$host/document_errors/50x.html;
  322.        
  323. ################## Настройки GZIP###########################
  324.       # http/ngx_http_gzip_module.html
  325.        gzip               on;
  326.         gzip_static        on;
  327.         gzip_min_length  1024;
  328.         gzip_buffers    64 8k;
  329.         gzip_http_version 1.1;
  330.         # Разрешает или запрещает сжатие ответа методом gzip для проксированных запросов в зависимости от запроса и ответа.
  331.        gzip_proxied     expired no-cache no-store private auth;
  332.         # Разрешает сжатие ответа методом gzip для указанных MIME-типов в дополнение к text/html, который сжимается всегда.
  333.        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;
  334.         # Запрещаем сжатие gzip для IE6. Специальная маска “msie6” (0.7.12) соответствует рег. выражению “MSIE [4-6]\.”, но работает быстрее. Начиная с версии 0.8.11, из этой маски исключается “MSIE 6.0; ... SV1”.
  335.        gzip_disable     "msie6";
  336.         # Уровень gzip-компрессии.
  337.        gzip_comp_level    5;
  338.         gzip_proxied     any;
  339.  
  340.  
  341.                   aio on; # включаем AIO          
  342.                  # Директива автоматически запрещает (0.7.15) использование sendfile для данного запроса. Рекомендуется использовать для больших файлов
  343.                  directio       1m;
  344.  
  345.     # Log format
  346.    log_format  main    '$remote_addr - $remote_user [$time_local] $request '
  347.                         '"$status" $body_bytes_sent "$http_referer" '
  348.                         '"$http_user_agent" "$http_x_forwarded_for"';
  349.     log_format  bytes   '$body_bytes_sent';
  350.     access_log          /var/log/nginx/access.log  main;
  351.     #access_log off;        
  352.                        
  353. }#/http
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement