Конфигуриране на NGINX за поддръжка на единични и множество WordPress сайтове

Оферта от 8host.com

конфигуриране

WordPress е най-популярната система за управление на съдържанието (CMS). WordPress сайтовете могат да се поддържат с помощта на HTTP уеб сървъри като Apache или NGINX.

Много потребители днес предпочитат NGINX поради неговата мащабируема, управлявана от събития архитектура и ниска консумация на ресурси. Това ръководство ще ви покаже как да настроите NGINX за различни типове инсталации на WordPress (включително многосайтови конфигурации) и да използвате правила за пренаписване и .conf файлове.

Изисквания

  • Потребител с достъп до sudo.
  • Предварително инсталиран LEMP стек на Ubuntu или Debian.

Също така имайте предвид, че в ръководството PHP-FPM ще използва UNIX сокет.

Основна NGINX оптимизация

Работни процеси и връзки на NGINX

Според препоръките броят на работните процеси на NGINX трябва да съответства на броя на процесорите. За да разберете броя на процесорите, въведете:

cat /proc/cpuinfo grep процесор

Отворете главния конфигурационен файл на NGINX:

sudo nano /etc/nginx/nginx.conf

Променете броя на работните процеси на NGINX според системните условия:

NGINX ограничава броя на едновременните връзки, които работният процес може да поддържа; ако уебсайтът има много посетители, препоръчително е да увеличите лимита за връзка.

помощна програма gzip

Помощната програма gzip компресира файлове, което ви позволява да увеличите скоростта на WordPress; колкото по-малък е размерът на данните, поискани от потребителя, толкова по-бързо сървърът ще ги обработи и ще върне отговора. CSS и HTML файловете съдържат много едни и същи редове, повтарящ се текст и интервали. Gzip използва алгоритъма DEFLATE,който премахва дублиращи се редове, отнасящи се до първия такъв ред. Това прави файла много по-малък. Намерете секцията Gzip и я активирайте:

gzip включен; gzip_types текст/css текст/x-компонентно приложение/x-javascript приложение/javascript текст/javascript текст/x-js текст/richtext изображение/svg+xml текст/обикновен текст/xsd текст/xsl текст/xml изображение/x-икона;

Запазете и затворете файла:

Създаване на .conf файлове

За многосайтови настройки на WordPress трябва да създадете няколко .conf файла, които ще се зареждат от сървърни блокове; по този начин не е нужно да пренаписвате една и съща конфигурация за всеки сървърен блок.

Създайте три файла за съхранение на конфигурации:

  • common.conf: общи настройки на сайта.
  • wordpress.conf: Настройки на сайта на WordPress.
  • multisite.conf: Специални конфигурации за многосайтови инсталации на WordPress с поддиректории.

Всички файлове трябва да се съхраняват в глобалната директория. Създайте тази директория:

sudo mkdir /etc/nginx/global

файл common.conf

Създайте първия файл - common.conf.

sudo nano common.conf

Поставете следните настройки в него:

# глобален конфигурационен файл. # ОСНОВНО : Конфигуриране на Nginx Listening Port listen 80; # ОСНОВНО : Файл по подразбиране за обслужване. Ако първият файл не бъде намерен, index index.php index.html index.htm; # ОСНОВНО: няма регистрационни файлове на favicon location = /favicon.ico log_not_found off; access_log off; > # ВАЖНО: robots.txt location = /robots.txt позволява всички; log_not_found изключен; access_log off; > # ОСНОВНО : Конфигурирайте 404 страници error_page 404 /404.html; # ОСНОВНО: Конфигурирайте 50x страници error_page 500 502 503 504 /50x.html; местоположение=/50x.html корен /usr/share/nginx/www; > # СИГУРНОСТ: Откажете всички опити за достъп до скрити файлове .abcde локация

/\. отричам всички; > # ПРОИЗВОДИТЕЛНОСТ: Задайте изтичащи заглавки за статични файлове и изключете регистрирането. местоположение

* ^.+\.(jscssswfxmltxtoggogvsvgsvgzeototfwoffmp4ttfrssatomjpgjpeggifpngicoziptgzgzrarbz2docxlsexeppttarmidmidiwavbmprtf)$ access_log off; log_not_found изключен; изтича 30d; >

  • Линията слуша 80; указва порта, на който сървърът ще слуша.
  • Редът "index index.php..." дефинира стандартния файл за обслужване. Ако първият файл, указан на този ред, не бъде намерен, сървърът ще търси втория файл и т.н. Ако имате HTML сайтове, добавете index.html и index.htm към реда.
  • Редът "location = / robots.txt" дава достъп до файла robots.txt; за да зададете различна директория за robots.txt, добавете псевдоним:

местоположение /robots.txt псевдоним /var/www/example.com/public/sample_robots.txt; >

/\. » блокира скрити файлове (името им започва с точка).

* ^.+\.(jscssswf…" е отговорен за използването на кеша. Стойност 30d ще запази статични файлове (като изображения) за 30 дни.

Запазете и затворете файла.

wordpress.conf файл

Сега трябва да създадете файл с настройки за WordPress сайтове:

sudo nano wordpress.conf

Поставете следния код във файла:

# WORDPRESS : Правила за пренаписване, изпраща всичко през index.php и запазва добавения низ на заявката непокътнат location / try_files $uri $uri/ /index.php?q=$uri&$args; > # СИГУРНОСТ: Откажете всички опити за достъп до PHP файлове в местоположението на директорията за качване

* /(?:uploadsfiles)/.*\.php$ откажи всички; > # ИЗИСКВАНИЯ: Активирайте поддръжката на PHP местоположение

\.php$ # СИГУРНОСТ : Защита срещу експлоатиране от нулев ден try_files $uri =404; # ENABLE : Активирайте PHP, слушайте fpm sock fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; включете fastcgi_params; > # PLUGINS : Активиране на правила за пренаписване за Yoast SEO SiteMap пренаписване ^/sitemap_index\.xml$ /index.php?sitemap=1 последно; пренапишете ^/([^/]+?)-sitemap([0-9]+)?\.xml$ /index.php?sitemap=$1&sitemap_n=$2 последно; #Да! направи го.

Правилото try_files $uri $uri/ /index.php?q=$uri&$args ви позволява да настроите персонализирана структура на връзката.

* /(?:uploadsfiles)/.*\.php$ предотвратява качването и изпълнението на зловреден код.

\.php$ позволява на NGINX да предава php скриптове на PHP5.

правило за сигурност try_files $uri =404; връща грешка 404, ако исканият файл не бъде намерен.

Забележка : Още правила могат да се добавят към този файл. Например отделни добавки изискват допълнителни правила.

multisite.conf файл

За разлика от инсталацията на WordPress за един сайт, която не изисква настройка за пренаписване на връзка, инсталацията за много сайтове изисква чисти URL адреси. Създайте файл за тази настройка:

sudo nano multisite.conf

Добавете следните настройки към този файл:

# Пренаписване на правила за WordPress Multi-site. if (!-e $request_filename) rewrite /wp-admin$ $scheme://$host$uri/ постоянно; пренапишете ^/[_0-9a-zA-Z-]+(/wp-.*) $1 последно; пренапишете ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 последно; >

Запазете и затворете файла.

виртуални хостове на nginx

Сега можете да създадете първия сървърен блок (така се наричат ​​виртуалните хостове на nginx). Всички необходими конфигурации са разпределени между .conf файлове,следователно няма смисъл да копирате стандартния файл на сървърния блок. Деактивирайте този файл.

sudo rm /etc/nginx/sites-enabled/default

Създайте нов файл за сървърния блок:

sudo nano /etc/nginx/sites-available/demo

В зависимост от вашите цели и изисквания към сървъра, копирайте в него най-подходящите конфигурации по-долу.

Лесна инсталация на WordPress

За да настроите един сайт с домейн www.demo.com, трябва да създадете сървърен блок и да поставите следните правила в него.

Посочете кой блок трябва да се използва за този домейн, добавете файловете common.conf и wordpress.conf и след това посочете пътя до инсталацията на WordPress.

сървър # URL: Правилен начин за пренасочване на URL адрес server_name demo.com; пренапишете ^/(.*)$ http://www.demo.com/$1 постоянно; > сървър server_name www.demo.com; root /home/demuser/sitedir; access_log /var/log/nginx/www.demo.com.access.log; error_log /var/log/nginx/www.demo.com.error.log; включете global/common.conf; включете global/wordpress.conf; >

Обърнете внимание на следните данни:

  • server_name: Указва виртуалния хост за този сайт.
  • корен: път към главната директория на сайта.
  • дневник за достъп и дневник на грешки: пътища към дневниците.

Както можете да видите, във файла има два сървърни блока; това е така, защото www.demo.com и demo.com са два различни URL адреса.

Можете също да посочите няколко домейна:

сървър # URL: Правилен начин за пренасочване на URL на server_name demo.com sub.demo.com example.com;

Многосайтова инсталация с поддиректории

Добавете правила за пренаписване към multisite.conf:

# URL: добавете постоянно пренасочване, ако е необходимо. сървър server_name www.demo1.com; root /home/demouser/sitedir1; access_log/var/log/nginx/www.demo1.com.access.log; error_log /var/log/nginx/www.demo1.com.error.log; включете global/common.conf; включете global/wordpress.conf; включете global/multisite.conf; >

Многосайтова инсталация с поддомейни

За да поддържате тази настройка, трябва да редактирате сървърния блок, за да добавите специален символ към домейна:

сървър server_name *.demo2.com; root /home/demouser/sitedir2; access_log /var/log/nginx/demo2.com.access.log; error_log /var/log/nginx/demo2.com.error.log; включете global/common.conf; включете global/wordpress.conf; >

HTML и други сайтове

За да поддържате html сайтове или уеб приложения, трябва да зададете персонализирани правила или да създадете допълнителни .conf файлове и след това да ги добавите към сървърния блок:

# URL: добавете постоянно пренасочване, ако е необходимо. сървър server_name www.demo3.com; root /home/demouser/sitedir3; access_log /var/log/nginx/demo3.com.access.log; error_log /var/log/nginx/demo3.com.error.log; # персонализирани правила >

Запазете и затворете файла.

Активиране на сървърни блокове

Сега трябва да активираме виртуални хостове, като създадем символна връзка между директориите за достъпни и разрешени за сайтове.

sudo ln -s /etc/nginx/sites-available/demo /etc/nginx/sites-enabled/demo

Рестартирайте NGINX, за да актуализирате настройките.

sudo услуга nginx презареждане;

Допълнителни препоръки

За да създадете други виртуални хостове, просто повторете горния процес, като посочите нова основна директория на документа и различен домейн.

В допълнение, няколко сървърни блока могат да бъдат комбинирани в един: