Привет сообщество!
На новом VPS (Ubuntu 16.04 + Nginx1.10 + PHP7.0-FPM + MySQL) распаковываю дистрибутив в директорию /var/www/html/my_domen.ru, даю права на файлы, в браузере вижу: "502 Bad Gateway ". До распаковки архива, по адресу, видна заглушка Nginx, если подставить произвольный Index.html, тоже видна страница. При этом поддомен для phpmyadmin - pma.my_domen.ru работает без проблем. Настройка VPS осуществлялась по инструкции http://www.cs-cart.ru/docs/4.3.x/install/vps/nginx/с поправкой на уже более новые релизы ПО.
Как победить 502 Bad Gateway?
В логе /var/log/nginx/error.log следующее:
2016/10/09 13:02:10 [crit] 11939#11939: *34 connect() to unix:/run/php7.0-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 31.173.85.56, server: my_domen.ru, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php7.0-fpm.sock:", host: "my_domen.ru" 2016/10/09 13:03:07 [emerg] 12378#12378: "server" directive is not allowed here in /etc/nginx/sites-enabled/default:38
Файл конфигурации /etc/nginx/sites-available/default
################################################################################ # Виртуальный хост по умолчанию, предназначен для работы по IP адресу или домену без собственной конфигурации ################################################################################ server { listen 80; server_name _; root /var/www/empty;# Редирект на нужный магазин по умолчанию location / { return 301 $scheme://my_domen.ru$request_uri; }
}
################################################################################
Описание и конфигурация основного домена для интернет-магазина
################################################################################
server {
listen 80;
# Домен интернет-магазина
server_name my_domen.ru www.my_domen.ru;# Кодировка по-умолчанию charset utf-8; # Расположение логов access_log /var/log/nginx/access.log combined; error_log /var/log/nginx/error.log; # Основной каталог интернет-магазина root /var/www/html/my_domen.ru; # Сжатие 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; # Точка входа в интернет-магазин location / { # Папка с файлами интернет-магазина root /var/www/html/my_domen.ru; # Главный скрипт index index.php index.html index.htm; # Для работы API rewrite ^/api/(.*)$ /api.php?_d=$1&ajax_custom=1&$args last; # Логика поиска скрипта по порядку: файл, папка, скрипт try_files $uri $uri/ @fallback; } # Правиле rewrite для модуля SEO location @fallback { rewrite ^(.*)$ /index.php?$args last; } # Настройки статики, первое правило location ~* \.(jpeg|ico|jpg|gif|png|css|js|pdf|txt|tar|gz|wof|csv|zip|xml|yml|woff|ttf) { access_log off; # Правило поиска статических файлов. Если файл не находится по адресу магазина, то ищем файл по правилу @statics. # Например если магазин расположен в подпапке my_domen.ru/shop/ try_files $uri @statics; expires 14d; add_header Access-Control-Allow-Origin *; add_header Cache-Control public; root /var/www/html/my_domen.ru; } # Правило поиска статических файлов для витрин. Например, если у Вас две витрины в разных подпапках: my_domen.ru и my_domen.ru/shop/ location @statics { rewrite ^/(\w+)/(.*)$ /$2 break; access_log off; rewrite_log off; expires 14d; add_header Cache-Control public; add_header Access-Control-Allow-Origin *; root /var/www/html/my_domen.ru; } # Обрабатываем PHP скрипты. Магия location ~ \.php$ { root /var/www/html/my_domen.ru; proxy_read_timeout 61; fastcgi_read_timeout 61; try_files $uri $uri/ =404; # Путь до сокета демона PHP-FPM # fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_pass unix:/run/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Ограничиваем возвожность запуска php в каталогах. Для безопасности.
location /app/ { deny all; # Разрешаем запуск скрипта обмена данными с 1С. location ^~ /app/addons/rus_exim_1c/exim_1c.php { allow all; } } # Разрешаем запуск скриптов способов оплаты location /app/payments/ { allow all; } # Запрещаем PHP в папке /design location /design/ { allow all; location ~* \.([tT][pP][lL]|[pP][hH][pP].?)$ { deny all; } } # Запрещаем PHP в папке /images location /images/ { allow all; location ~* \.([pP][hH][pP].?)$ { deny all; } } # Разрешаем только статику в папке /var location /var/ { deny all; location ~* \.(js|css|png|jpg|gz|xml|yml)$ { allow all; expires 1M; add_header Cache-Control public; add_header Access-Control-Allow-Origin *; } } # Закрываем доступ к бэкапам базы данных интернет-магазина (папка /var/database/) с наружи location /var/database/ { deny all; } # Хранилище резервных копий шаблонов location /var/skins_repository/ { allow all; location ~* \.([tT][pP][lL]|[pP][hH][pP].?)$ { deny all; } } # Обработка API location ~* api/ { rewrite ^/api/(.*)$ /api.php?_d=$1&ajax_custom=1&$args last; } # Запрвещаем .htaccess и .htpasswd location ~ /\.ht { deny all; }
}
################################################################################
pma.my_domen.ru
################################################################################
server {
listen 80;# Поддомен для phpmyadmin server_name pma.my_domen.ru www.pma.my_domen.ru; # root /run/php/; charset utf-8; # Расположение логов access_log /var/log/nginx/pma.my_domen.ru_access.log combined; error_log /var/log/nginx/pma.my_domen.ru_error.log; # Путь по которому будет ссылаться поддомен root /usr/share/phpmyadmin; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { root /usr/share/phpmyadmin; proxy_read_timeout 61; fastcgi_read_timeout 61; try_files $uri $uri/ =404; # Задаёт адрес FastCGI-сервера. Адрес указан в виде порта # fastcgi_pass unix:/var/run/php7.0-fpm.sock; fastcgi_pass unix:/run/php/php7.0-fpm.sock; # Подстановка имени файла после слеша в адресной строке/ fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
}