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; }}
Вот что в логах:
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"
В файле web/index.php всего одна строка:
<?phprequire_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 ?
melkozaur, Оптимизайка
Спасибо! То что нужно!
1 ядро процессора
1 Гб оперативной памяти
20 Гб жёсткого диска
Никакой панели у меня не установлено. Только 2 сайта: один самописный с нулевой посещаемостью, другой на вордпрессе - 200 чел/сут. А почему он пишет 128 мегабайт? Я могу увеличить этот лимит, скажем до 512 ?? Проблема решится?