Последняя проблема которая осталась, это то что теперь при обращении по любому адресу, который оканчивается на .php появляется страница nginx об ошибке 404 "404 Not Found nginx" а мне бы хотелось чтобы отдавалась моя красивая страница.
Прописать try_files $uri = /src/404.php я не могу, т.к. будет появляться 403 Forbidden.
Замкнутый круг какой то получается.
Как вариант думаю положить рядом с index.php файл 404.php но мне кажется все должно быть намного проще. Сейчас конфиг выглядит так:
server { listen 80; server_name site.ru; root /var/www/site; index index.php; error_page 404 /404.php;
bums: 500 это ошибка сервера, может лучше найти и пофиксить ошибку чем мудрить с 404. В error логе что пишется?
Вот что в логах:
2018/05/11 08:17:20 [error] 5#5: *32 rewrite or internal redirection cycle while internally redirecting to "/404.php", client: 172.18.0.1, server: site.ru, request: "GET /src/config.php HTTP/2.0", host: "site.ru"
2018/05/11 08:18:49 [error] 5#5: *32 rewrite or internal redirection cycle while internally redirecting to "/404.php", client: 172.18.0.1, server: site.ru, request: "GET /sdvasdfasfdasdf.php HTTP/2.0", host: "site.ru"
bums:
И если содержимое каталога src не участвует в работе сайта и не должно быть доступно по http, то лучше вынести этот каталог за пределы DOCUMENT_ROOT, уровнем выше.
В файле web/index.php всего одна строка:
<?php require_once __DIR__ . "/../src/route.php";
этот файл только принимает запрос от пользователя.
Все файлы проекта распологаются в src.
Небольшое дополнение!
Насколько я понял роблема была в этой строчке:
try_files $uri = /404.php;
Файла такого по адресу /var/www/site/www нет, поэтому происходит зацикливание.
Частично заработало после добавления следующей строки:
location ~ \.php$ { root /var/www/site/src; ... }
Однако появилась другая проблема:
При обращении к НЕсуществующему файлу, например httр://site.ru/sdvasdfasfdasdf.php, появляется моя страница 404 - как и положено.
Но при обращении к существующему файлу, например httр://site.ru/config.php запускается скрипт!
Как мне запретить прямой запуск php скриптов из браузера, расположенных в папке src ?
KM.UA: Нехватка RAM на сервере. Панель какая установлена?
1 ядро процессора
1 Гб оперативной памяти
20 Гб жёсткого диска
Никакой панели у меня не установлено. Только 2 сайта: один самописный с нулевой посещаемостью, другой на вордпрессе - 200 чел/сут. А почему он пишет 128 мегабайт? Я могу увеличить этот лимит, скажем до 512 ?? Проблема решится?
Каким образом? Что за ПО? Какой там IP прописано слушать?
Nginx
Настройки по умолчанию.
server {
listen 80 default_server;
listen [::]:80 default_server;
...
}
При обращении по статическому ip или домену test.ru открывается приветственная страница nginx (если из внешнего интернета).
Если из той же сети - то не грузит ничего.
Добавил такой блок:
location ~ ^/src/.+\.php$ {deny all;
}
Последняя проблема которая осталась, это то что теперь при обращении по любому адресу, который оканчивается на .php появляется страница nginx об ошибке 404 "404 Not Found nginx" а мне бы хотелось чтобы отдавалась моя красивая страница.
Прописать try_files $uri = /src/404.php я не могу, т.к. будет появляться 403 Forbidden.
Замкнутый круг какой то получается.
Как вариант думаю положить рядом с index.php файл 404.php но мне кажется все должно быть намного проще. Сейчас конфиг выглядит так:
server {
listen 80;
server_name site.ru;
root /var/www/site;
index index.php;
error_page 404 /404.php;
location / {
try_files $uri /web/index.php;
}
location ~ ^/src/.+\.php$ {
deny all;
}
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass fpm:9000;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
500 это ошибка сервера, может лучше найти и пофиксить ошибку чем мудрить с 404.
В error логе что пишется?
Вот что в логах:
2018/05/11 08:17:20 [error] 5#5: *32 rewrite or internal redirection cycle while internally redirecting to "/404.php", client: 172.18.0.1, server: site.ru, request: "GET /src/config.php HTTP/2.0", host: "site.ru"
2018/05/11 08:18:49 [error] 5#5: *32 rewrite or internal redirection cycle while internally redirecting to "/404.php", client: 172.18.0.1, server: site.ru, request: "GET /sdvasdfasfdasdf.php HTTP/2.0", host: "site.ru"
И если содержимое каталога src не участвует в работе сайта и не должно быть доступно по http, то лучше вынести этот каталог за пределы DOCUMENT_ROOT, уровнем выше.
В файле web/index.php всего одна строка:
этот файл только принимает запрос от пользователя.
Все файлы проекта распологаются в src.
Небольшое дополнение!
Насколько я понял роблема была в этой строчке:
try_files $uri = /404.php;
Файла такого по адресу /var/www/site/www нет, поэтому происходит зацикливание.
Частично заработало после добавления следующей строки:
Однако появилась другая проблема:
При обращении к НЕсуществующему файлу, например httр://site.ru/sdvasdfasfdasdf.php, появляется моя страница 404 - как и положено.
Но при обращении к существующему файлу, например httр://site.ru/config.php запускается скрипт!
Как мне запретить прямой запуск php скриптов из браузера, расположенных в папке src ?
melkozaur, Оптимизайка
Спасибо! То что нужно!
Нехватка RAM на сервере. Панель какая установлена?
1 ядро процессора
1 Гб оперативной памяти
20 Гб жёсткого диска
Никакой панели у меня не установлено. Только 2 сайта: один самописный с нулевой посещаемостью, другой на вордпрессе - 200 чел/сут. А почему он пишет 128 мегабайт? Я могу увеличить этот лимит, скажем до 512 ?? Проблема решится?