Как установить php fpm
In order to enable FPM in your PHP build you need to add —enable-fpm to your configure line.
There are several other FPM-specific configure options (all of them optional):
- —with-fpm-user — set FPM user (default — nobody).
- —with-fpm-group — set FPM group (default — nobody).
- —with-fpm-systemd — Activate systemd integration (default — no).
- —with-fpm-acl — Use POSIX Access Control Lists (default — no).
- —with-fpm-apparmor — Activate AppArmor integration (default — no).
- —with-fpm-selinux — Activate SELinux integration (default — no).
Changelog
| Version | Description |
|---|---|
| 8.2.0 | The —with-fpm-selinux option was added. |
| 8.0.0 | The —with-fpm-apparmor option was added. |
User Contributed Notes
There are no user contributed notes for this page.
- FastCGI Process Manager (FPM)
- Installation
- Configuration
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
php-fpm for Windows?
The PHP-FPM’s homepage http://php-fpm.org/ states that it is part of PHP since PHP 5.3.3. Now, I was wondering, when I download the newest PHP binaries from php.net, there is no php-fpm in it. How do I get it? Is it even available for Windows?
1,360 17 17 silver badges 30 30 bronze badges
asked Dec 27, 2010 at 15:25
3,177 9 9 gold badges 41 41 silver badges 63 63 bronze badges7 Answers 7
Here how to setup php-fpm on Windows:
- Download the .zip file from http://windows.php.net/download/. The .zip file should be VC9 which has the FastCGI file (php-cgi.exe). Don’t download VC6, and don’t download the .msi file because it requires that you have IIS setup already in order to install php-fpm. The zip file contains the php-cgi.exe which is what you need for php-fpm. I downloaded a slightly older version, php-5.3.10-Win32-VC9-x86.zip, from here http://windows.php.net/downloads/releases/archives/ because I wanted to match the version running on my production server.
- Unzip the file, e.g. unzip into C:\php-5.3.10-Win32-VC9-x86
- Edit the php.ini file as needed. What I did:
# nginx security setting cgi.fix_pathinfo=0 extension_dir = "C:\php-5.3.10-Win32-VC9-x86\ext"enable the following modules by uncommenting them:
extension=php_curl.dll extension=php_mbstring.dll extension=php_mysqli.dll@ECHO OFF ECHO Starting PHP FastCGI. set PATH=C:\php-5.3.10-Win32-VC9-x86;%PATH% C:\php-5.3.10-Win32-VC9-x86\php-cgi.exe -b 127.0.0.1:9123 -c C:\php-5.3.10-Win32-VC9-x86\php.inilocation ~ \.php$
1,360 17 17 silver badges 30 30 bronze badges
answered May 17, 2012 at 17:41
702 6 6 silver badges 14 14 bronze badges
but that’s not php-fpm, it’s fastcgi
Jul 1, 2012 at 4:25
php-fpm = php-Fastcgi Process Manager
Jul 2, 2012 at 14:10Sorry Mister Dai, I have not tried using it with Apache. Once I learned about and started using NGINX, I haven’t used Apache anymore.
Jul 2, 2012 at 14:13
The guide is useful, though Severus was right. In this case, the process manager is the batch file that starts and kills a single fastcgi process. The actual php-fpm is much more versatile and comes with a 300-lines config file.
Aug 28, 2012 at 13:04
@Alan Yes, but this answer is merely a process starter. There is no multi-threading or other support for concurrent requests.
Aug 26, 2013 at 13:17
Old as this post is I have to weigh in here because what has been posted here is not PHP-FPM, it’s running PHP using Fast-CGI.
Yes PHP-FPM stands for PHP-FastCGI Process Manager and so implements FastCGI but you are forgetting that FPM is much more than that as it contains process management features that are not managed by the webserver.
On *nix systems PHP-FPM has a separate process that manages the PHP child processes and has a detailed configuration to specify how these processes are managed. For details on these features read here
Launching a CGI process on windows is not the same thing. It does not spaw worker processes or dynamically scale them or allow multi-threading.
However as suggested, you may launch a CGI process if you wish.
answered Jan 18, 2018 at 6:27
629 5 5 silver badges 6 6 bronze badgesAlan’s answer is a great start. However, for Apache 2.4 and later you do not need to run PHP-FPM as a separate service, you can use mod_fcgid to handle everything within Apache.
Here is an example configuration:
LoadModule fcgid_module modules/mod_fcgid.so FcgidInitialEnv PHPRC "c:/php" FcgidInitialEnv PATH "c:/php;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;" FcgidInitialEnv SystemRoot "C:/Windows" FcgidInitialEnv SystemDrive "C:" FcgidInitialEnv TEMP "C:/WINDOWS/Temp" FcgidInitialEnv TMP "C:/WINDOWS/Temp" FcgidInitialEnv windir "C:/WINDOWS" FcgidIOTimeout 64 FcgidConnectTimeout 16 FcgidMaxRequestsPerProcess 500AddHandler fcgid-script .php FcgidWrapper c:/php/php-cgi.exe .php Note, this is based on a post in Apache Lounge. As helpful as it was, their version had quotes around c:/php/php-cgi.exe and if you do that it WILL NOT START php-cgi.exe, at least on Windows Server 2012, and you get HTTP 500. Took me a painful few days to figure that out.
answered Aug 8, 2014 at 2:28
Erica Kane Erica Kane
3,222 26 26 silver badges 36 36 bronze badgesDear Erica, THANK YOU for isolating the problem for me! I had been struggling with this for several weeks (albeit intermittently).
Sep 1, 2014 at 2:25
That’s not an answer to the question. The question was if and where fpm is on Windows. You provided an alternative approach to using fpm.
May 4, 2015 at 20:58
An approach which will work for many Windows users, and an answer that has helped others as you see above. seriously, you needed to downvote this?
May 4, 2015 at 22:40
I did not have any issues with quotes around php-cgi.exe running Apache 2.4.16. Like in the post referenced, I suspect this issue affected older versions of Apache. Granted, I’m using a Server 2008, and not Server 2012.
Aug 19, 2015 at 15:58
This is a valid answer to the question. If your engine stops and you think it needs a new flux capacitor, it’s a valid answer for one to say «those aren’t available for your model, but this coil pack will get her going»
Aug 5, 2022 at 4:03
Starting PHP v5.3.3, FPM Server-API [SAPI] support has been integrated into core PHP. This means, you can take PHP’s source codes and compile and build them with FPM-SAPI [using —enable-fpm configuration parameter] support, instead of let’s say Apache SAPI [ —enable-apx2 ]. As shown in PHP-Wiki you can build PHP almost the same way you do in *nix systems — that is, configuration-wise. I would suggest you learn the ins and outs of building PHP in *nix systems first, and even try to do it yourself [usual configure , make and make install pattern], and then try to utilize the experience gained from it to build on Windows environment.
In addition to —enable-fpm configuration parameter, there are two additional parameters as well: —with-fpm-user=USERNAME_HERE and —with-fpm-group=USERGROUPNAME_HERE . These two work in *nix environment, but may not be available in Windows.
Overall, I am pretty sure you can build your own PHP-FPM server app on Windows using Visual Studio IDE. There are no official PHP-FPM builds as of the date of this writing.
EDIT 1: Ok, guess I might be wrong re the possibility of building PHP-FPM on Windows, since this SAPI uses libevent component from *nix environment. Guess you will have to stick with Cygwin-bundled installation after all.
Установка Linux, Nginx, MySQL, PHP (набора LEMP) в Ubuntu 18.04

Набор LEMP — это комплекс программного обеспечения, используемый для обслуживания динамических веб-страниц и веб-приложений. Аббревиатура LEMP обозначает операционную систему Linux с веб-сервером Nginx (произносится как «энджинкс»). Данные серверной части хранятся в базе данных MySQL, а динамическая обработка выполняется PHP.
В этом руководстве показывается, как установить комплекс LEMP на сервер Ubuntu 18.04. Операционная система Ubuntu обеспечивает выполнение первого требования. Далее мы расскажем, как настроить и запустить все остальные компоненты.
Предварительные требования
Для выполнения настоящего обучающего модуля на вашем сервере должна быть учетная запись обычного пользователя без привилегий root и с привилегиями sudo . Настройте эту учетную запись, следуя указаниям Руководства по начальной настройке сервера Ubuntu 18.04.
После создания пользователя вы будете готовы выполнить шаги, описанные в этом руководстве.
Шаг 1 — Установка веб-сервера Nginx
Для показа веб-страниц посетителям нашего сайта мы будем использовать современный и эффективный веб-сервер Nginx.
Все программное обеспечение, используемое в этой процедуре, берется из заданных по умолчанию хранилищ пакетов Ubuntu. Это означает, что мы можем использовать для установки набор управления пакетами apt .
Поскольку в этом сеансе мы будем использовать apt впервые, нужно обновить указатель пакетов вашего сервера. Затем нужно выполнить установку сервера:
В Ubuntu 18.04 настроен запуск Nginx сразу же после установки.
Если вы используете брандмауэр ufw , как описано в руководстве по начальной установе, вам нужно будет разрешить подключение к Nginx. Nginx регистрируется в ufw после установки, и поэтому процедура довольно простая.
Рекомендуется применять самый ограничивающий профиль, который будет разрешать желаемый трафик. Поскольку в этом модуле вы не настроили SSL для своего сервера, вам нужно будет только разрешить трафик на порту 80 .
Для этого введите следующее:
Для проверки изменения используйте команду:
Результат выполнения этой команды покажет, что трафик HTTP разрешен:
OutputStatus: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)После добавления нового правила брандмауэра вы можете проверить, запущен ли сервер, указав в браузере доменное имя вашего сервера или публичный IP-адрес.
Если у вас нет доменного имени, указывающего на ваш сервер, и вы не знаете публичный IP-адрес вашего сервера, вы можете найти его, введя в терминал следующую команду:
Команда выведет несколько IP-адресов. Вы можете попробовать каждый из них в своем браузере.
Также вы можете проверить доступность IP-адреса из других мест в интернете:
Введите полученный адрес в браузер, и вы попадете на страницу Nginx по умолчанию:
http://server_domain_or_IP
Если вы увидите эту страницу, вы успешно установили Nginx.
Шаг 2 — Установка MySQL для управления данными сайта
Теперь, когда у вас есть веб-сервер, вам нужно установить MySQL (система управления базами данных) для хранения и управления данными вашего сайта.
Для установки MySQL введите следующее:
Программное обеспечение СУБД MySQL установлено, но его настройка еще не завершена.
Для защиты установки в комплект MySQL входит скрипт, запрашивающий подтверждение небезопасных изменений параметров по умолчанию. Запустите скрипт, введя следующую команду:
Скрипт предложит настроить VALIDATE PASSWORD PLUGIN .
Предупреждение. Эту функцию следует активировать при наличии разумных оснований. Если она активирована, MySQL будет отклонять пароли, не соответствующие определенным критериям, и выводить сообщение об ошибке. Это может вызвать проблемы, если вы используете слабый пароль в сочетании с программным обеспечением для автоматической настройки учетных данных пользователя MySQL, например, с пакетами Ubuntu для phpMyAdmin. Оставить проверку отключенной достаточно безопасно, но для входа в базу данных всегда нужно использовать надежные уникальные пароли.
Выберите Y для активации или любой другой вариант, чтобы продолжить без активации этой функции.
VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin? Press y|Y for Yes, any other key for No:Если вы активировали функцию проверки, скрипт также попросит вас задать уровень проверки пароля. Помните, что если вы укажете самый высокий уровень 2, система будет выводить сообщения об ошибке при попытке установки пароля, который не будет содержать цифры, буквы в верхнем и нижнем регистре и специальные символы, или будет содержать распространенные словарные слова.
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1Затем вам нужно будет отправить и подтвердить пароль пользователя root:
Please set the password for root here. New password: Re-enter new password:Для всех остальных вопросов нужно выбирать Y и нажимать ENTER в каждом диалоговом окне. В результате будут удалены некоторые анонимные пользователи и тестовая база данных, отключена возможность удаленного входа для пользователя root, и будут загружены новые правила, чтобы СУБД MySQL немедленно использовала внесенные изменения.
В системах Ubuntu с СУБД MySQL 5.7 (и более поздними версиями) для пользователя root СУБД MySQL по умолчанию для аутентификации задан плагин auth_socket , а не пароль. Во многих случаях это обеспечивает более высокую безопасность и удобство, однако это также может осложнить ситуацию, если вам нужно предоставить доступ к пользователю внешней программе (например, phpMyAdmin).
Если использование плагина auth_socket для доступа к MySQL соответствует вашим рабочим процессам, вы можете перейти к шагу 3. Если же вы предпочитаете использовать пароль при подключении к MySQL в качестве пользователя root, метод аутентификации нужно изменить с auth_socket на mysql_native_password . Для этого откройте командную строку MySQL через терминал:
Затем проверьте, какой метод аутентификации используют ваши аккаунты пользователей MySQL с помощью следующей команды:
Output+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)В этом примере вы можете видеть, что root пользователь действительно использует метод аутентификации с помощью плагина auth_socket . Чтобы настроить для учетной записи root аутентификацию с помощью пароля, выполните следующую команду ALTER USER . Обязательно измените значение password на надежный пароль по вашему выбору:
Затем выполните команду FLUSH PRIVILEGES , которая просит сервер перезагрузить предоставленные таблицы и ввести в действие изменения:
Проверьте методы аутентификации, применяемые для каждого из ваших пользователей, чтобы подтвердить, что root-пользователь больше не использует для аутентификации плагин auth_socket :
Output+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)В результатах этого примера можно увидеть, что теперь пользователь root СУБД MySQL проходит аутентификацию с помощью пароля. Убедившись в этом на своем сервере, вы можете выйти из оболочки MySQL:
Примечание. После настройки аутентификации с помощью пароля для пользователя root СУБД MySQL вы не сможете получать доступ к MySQL с помощью команды sudo mysql , которая использовалась до этого. Вместо этого нужно запустить следующую команду:
После ввода заданного пароля вы увидите командную строку MySQL.
Теперь СУБД настроена, и вы можете переходить к установке PHP.
Шаг 3 – Установка PHP и настройка Nginx для использования процессора PHP
Теперь у вас есть Nginx для обслуживания ваших страниц и MySQL для хранения и управления данными, однако у вас до сих пор не установлено ПО, которое может генерировать динамический контент. Для этого требуется установить PHP.
Поскольку Nginx не поддерживает нативную обработку PHP, как некоторые другие веб-серверы, вам потребуется установить php-fpm , т.е. «менеджер процессов fastCGI». Мы укажем Nginx передавать запросы PHP в это программное обеспечение для обработки.
Примечание. В зависимости от поставщика облачных услуг вам может потребоваться установить хранилище Ubuntu universe , которое включает бесплатное программное обеспечение и программное обеспечение с открытым исходным кодом, поддерживаемое сообществом Ubuntu, прежде чем устанавливать пакет php-fpm . Для этого можно ввести следующую команду:
Установите модуль php-fpm с дополнительным вспомогательным пакетом php-mysql , который позволит PHP взаимодействовать с серверной частью вашей базы данных. При установке будут загружены необходимые файлы ядра PHP. Введите следующее:
Теперь у вас установлены все требуемые компоненты набора LEMP, однако вам нужно внести еще несколько изменений конфигурации, чтобы Nginx использовал процессор PHP для динамического контента.
Это изменение конфигурации выполняется уровне блока сервера (блоки сервера похожи на виртуальные хосты в Apache). Откройте новый файл конфигурации блока сервера в каталоге /etc/nginx/sites-available/ . В этом примере новый файл конфигурации блока сервера имеет имя example.com , хотя вы можете использовать любое желаемое имя:
Если вам потребуется восстановить конфигурацию по умолчанию, вы можете отредактировать новый файл конфигурации блока сервера, а не изменять используемый по умолчанию файл.
Добавьте в новый файл конфигурации блока следующее содержимое, которое взято с некоторыми модификациями из файла конфигурации блока сервера по умолчанию:
/etc/nginx/sites-available/example.com
server < listen 80; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; server_name example.com; location / < try_files $uri $uri/ =404; >location ~ \.php$ < include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; >location ~ /\.ht < deny all; >>Ниже описано действие этих директив и блоков расположения:
- listen — определяет, что будет прослушивать порт Nginx. В данном случае он будет прослушивать порт 80 , используемый по умолчанию для протокола HTTP.
- root — определяет корневой каталог документа, где хранятся файлы, обслуживаемые сайтом.
- index — задает для Nginx приоритет обслуживания файлов с именем index.php (при наличии) при запросе файла индекса.
- server_name — определяет, какой серверный блок должен использоваться для заданного запроса вашего сервера. Эта директива должна указывать на доменное имя или публичный IP-адрес вашего сервера.
- location / — первый блок расположения включает директиву try_files , которая проверяет наличие файлов, соответствующих запросу URI. Если Nginx не сможет найти соответствующий файл, будет возвращена ошибка 404.
- location ~ \.php$ — этот блок расположения отвечает за фактическую обработку PHP посредством указания Nginx на файл конфигурации fastcgi-php.conf и файл php7.2-fpm.sock file, который объявляет, какой сокет ассоциирован с php-fpm .
- location ~ /\.ht — последний блок расположения отвечает за файлы .htaccess , которые Nginx не обрабатывает. При добавлении директивы deny all из файлов .htaccess в корневой каталог документа они не будут выводиться посетителям.
После добавления этого содержания следует сохранить и закрыть файл. Для активации нового серверного блока создайте символическую ссылку от нового файла конфигурации серверного блока (в каталоге /etc/nginx/sites-available/ ) на каталог /etc/nginx/sites-enabled/ :
Затем уберите ссылку на файл конфигурации по умолчанию из каталога /sites-enabled/ :
Примечание. Если вам потребуется восстановить конфигурацию по умолчанию, вы можете сделать это посредством воссоздания символической ссылки:
Протестируйте новый файл конфигурации на ошибки синтаксиса:
При появлении сообщений о каких-либо ошибках, вернитесь и повторно проверьте ваш файл, прежде чем продолжать.
Когда вы будете готовы, перезагрузите Nginx для внесения необходимых изменений:
Это завершает установку и настройку набора LEMP. Однако будет разумно убедиться, что все компоненты могут связываться друг с другом.
Шаг 4 — Создание файла PHP для тестовой конфигурации
Теперь набор LEMP должен быть полностью настроен. Вы можете протестировать его, чтобы убедиться, что Nginx может правильно передавать файлы .php на процессор PHP.
Используйте текстовый редактор, чтобы создать тестовый файл PHP с именем info.php в корневом каталоге документа:
Введите в новый файл следующие строки: Это корректный код PHP, который будет возвращать информацию о вашем сервере:
/var/www/html/info.php
После завершения редактирования сохраните и закройте файл.
Теперь вы можете открыть эту страницу в браузере, указав в адресной строке доменное имя вашего сервера или публичный IP-адрес и добавив /info.php :
http://your_server_domain_or_IP/info.phpВы увидите веб-страницу с информацией о вашем сервере, сгенерированную PHP:

Если ваша страница выглядит таким образом, вам удалось успешно реализовать обработку PHP с помощью Nginx.
После подтверждения того, что Nginx корректно отображает страницу, рекомендуется удалить созданный вами файл, поскольку он может дать неавторизованным пользователям определенную информацию о вашей конфигурации, которая может быть использована при попытке взлома. При необходимости вы всегда сможете восстановить этот файл.
Теперь на вашем сервере Ubuntu 18.04 имеется полностью настроенный и работающий набор LEMP.
Заключение
Набор LEMP — это мощная платформа, позволяющая размещать и обслуживать на сервере практически любой сайт или приложение.
Теперь можно выполнить ряд последующих шагов. Например, вы можете проверить защищенность соединений с вашим сервером. Для этого вы можете обеспечить безопасность установки Nginx с помощью Let’s Encrypt. Следуя указаниям настоящего руководства, вы получите бесплатный сертификат TLS/SSL для вашего сервера, который позволит ему обслуживать контент через протокол HTTPS.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Настройка веб-сервера Nginx + PHP-FPM + MySQL
Быстрая установка и настройка веб-сервера NginX для работы CS-Cart.
Если вы в первый раз настраиваете VPS сервер, то рекомендуем начать с изучения с более детальной инструкции: Настройка веб-сервера Apache .
Видео
Сервер и ресурсы
Для инструкции арендован самый простой VPS сервер.
Обычно VPS сервер предоставляется с чистой операционной системой, мы выбрали последнюю версию Ubuntu 14.04 LTS x86 на данный момент.
Технические характеристики сервера:
ОС Ubuntu 14.04 LTS x86 Диск 2.0 ГБ Процессор 2000 МГц Память 128 МБ Ресурсов данного сервера достаточно только для теста и эксперимента.
Предупреждение! Настройку сервера для живого интернет-магазина необходимо доверить профессионалам.
Данная инструкция может быть использована для тестовых интернет-магазинов.
1. Подключаемся к серверу по SSH
Используем терминал (PuTTY).
2. Обновим список пакетов
Запустите в терминале (PuTTY) команду:
sudo apt-get update -y
3. Устанавливаем NginX
sudo apt-get install nginx -y
4. Останавливаем Nginx
Остановим NginX на время настройки простой командой:
sudo service nginx stop
5. Узнаем количество процессоров в системе
Количество процессоров нам понадобится для конфигурации NginX:
cat /proc/cpuinfo | grep processor | wc -l
Запоминаем число процессоров.
6. Установим число процессов Nginx
Найдите на сервере и откройте для редактирования файл:
worker_processes 4;
Установите для неё значение равное числу процессоров. В нашем случае один процессор.
worker_processes 1;
7. Создадим папку для интернет-магазина
mkdir -p /var/www/html/example.com
В примерах команд и в конфигурационном файле мы будем использовать example.com . Замените его на имя своего домена, например, dbazhenov.ru.
8. Конфигурация Nginx
Нам необходимо настроить конфигурацию NginX. Сделаем так, чтобы Nginx понимал наш домен и отправлял его в нужную папку на сервере, а также установим правила для SEO.
Найдите на сервере и откройте файл:
Удалите весь код и вставьте новый. Ниже будет код, в комментариях кратко описано происходящее. Вам нужно заменить домен example.com на ваш домен
####################################################################### # Описание и конфигурация основного домена для интернет-магазина ####################################################################### server listen 80; # Домен интернет-магазина server_name example.com; ############################################################################ # Кодировка по умолчанию charset utf-8; ############################################################################ # Основной каталог интернет-магазина root /var/www/html/example.com; index index.php index.html index.htm; ############################################################################ # Сжатие gzip on; gzip_disable "msie6"; gzip_comp_level 6; gzip_min_length 1100; gzip_buffers 16 8k; gzip_proxied any; gzip_types text/plain application/xml application/javascript text/css text/js text/xml application/x-javascript text/javascript application/json application/xml+rss; ############################################################################ # Прочие настройки client_max_body_size 100m; client_body_buffer_size 128k; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; client_header_buffer_size 1k; large_client_header_buffers 4 16k; ############################################################################ access_log /var/log/nginx/example.com_access.log combined; error_log /var/log/nginx/example.com_error.log; ############################################################################ error_page 598 = @backend; ############################################################################ location @backend try_files $uri $uri/ /$2$3 /$3 /index.php =404; # Путь к сокету PHP-FPM fastcgi_pass unix:/var/run/php5-fpm.sock; # fastcgi_index index.php; fastcgi_read_timeout 360; # Добавляем содержимое fastcgi_params.conf ################################################################################ fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param REDIRECT_STATUS 200; ################################################################################ > ############################################################################ location / index index.php index.html index.htm; try_files $uri $uri/ /index.php?$args; > ############################################################################ location ~ ^/(\w+/)?(\w+/)?api/ rewrite ^/(\w+/)?(\w+/)?api/(.*)$ /api.php?_d=$3&ajax_custom=1&$args last; rewrite_log off; > ############################################################################ location ~ ^/(\w+/)?(\w+/)?var/database/ return 404; > location ~ ^/(\w+/)?(\w+/)?var/backups/ return 404; > location ~ ^/(\w+/)?(\w+/)?var/restore/ return 404; > location ~ ^/(\w+/)?(\w+/)?var/themes_repository/ allow all; location ~* \.(tpl|php.?)$ return 404; > > location ~ ^/(\w+/)?(\w+/)?var/ return 404; location ~* /(\w+/)?(\w+/)?(.+\.(js|css|png|jpe?g|gz|yml|xml))$ try_files $uri $uri/ /$2$3 /$3 /index.php?$args; allow all; access_log off; expires 1M; add_header Cache-Control public; add_header Access-Control-Allow-Origin *; > > ############################################################################ location ~ ^/(\w+/)?(\w+/)?app/payments/ return 404; location ~ \.php$ return 598; > > location ~ ^/(\w+/)?(\w+/)?app/addons/rus_exim_1c/ return 404; location ~ \.php$ return 598; > > location ~ ^/(\w+/)?(\w+/)?app/ return 404; > ############################################################################ location ~* /(\w+/)?(\w+/)?(.+\.(jpe?g|jpg|ico|gif|png|css|js|pdf|txt|tar|woff|svg|ttf|eot|csv|zip|xml|yml))$ access_log off; try_files $uri $uri/ /$2$3 /$3 /index.php?$args; expires max; add_header Access-Control-Allow-Origin *; add_header Cache-Control public; > ############################################################################ location ~ ^/(\w+/)?(\w+/)?design/ allow all; location ~* \.(tpl|php.?)$ return 404; > > ############################################################################ location ~ ^/(\w+/)?(\w+/)?images/ allow all; location ~* \.(php.?)$ return 404; > > ############################################################################ location ~ ^/(\w+/)?(\w+/)?js/ allow all; location ~* \.(php.?)$ return 404; > > ############################################################################ location ~ ^/(\w+/)?(\w+/)?init.php return 404; > location ~* \.(tpl.?)$ return 404; > location ~ /\.(ht|git) return 404; > location ~* \.php$ return 598 ; > ################################################################################ >
9. Перезапускаем nginx
sudo service nginx restart