Я пытаюсь организовать блокировку местоположения для всех, кто проходит mydomain.com/game/admin url, убедитесь, что сервер nginx для извлечения контента существует в /var/www/html/my-cakephp-приложение/ каталог. Мое приложение построено с использованием фреймворка cakephp, и его структура каталогов показана ниже:
- /var/www/html/my-cakephp-приложение/
- администратор
- Конфигурация
- Приставка
- Контроллер
- Вид
- webroot (в этом каталоге существует файл index.php точки входа приложения)
Также у меня есть статический веб-сайт html/css, расположенный в /var/www/html каталог. Так что любой с мой домен.com URL также может видеть этот веб-сайт.
Вот мой текущий блок сервера nginx:
сервер {
слушать 80;
слушать [::]:80;
корень /var/www/html;
индекс index.html index.htm index.php;
имя_сервера mydomain.com;
место расположения / {
try_files $uri $uri/ =404;
}
местоположение /игра/админ {
вернуть 301 /игра/админ/;
}
местоположение /игра/админ/ {
корень /var/www/html/my-cakephp-app/admin/webroot;
try_files $uri $uri/ /game/admin/index.php$is_args$args;
расположение ~* \.php(/|$) {
включить фрагменты/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
расположение ~ \.php$ {
включить фрагменты/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
местоположение ~ /\.ht {
отрицать все;
}
}
С этой настройкой мой статический веб-сайт работает нормально. Но приложение cakephp выдает ошибку 404 не найдено в браузере. Ошибок в nginx/error.log нет.
Но когда я запускаю конфигурацию nginx ниже, мое приложение работает нормально. Но мне нужно избавиться от моего сайта html/css. Я планирую обновить приложение html/css с помощью сайта wordpress. Поэтому у меня должна быть возможность запускать сайт WordPress в качестве родителя.
сервер {
слушать 80;
имя_сервера mydomain.com;
корень /var/www/html/my-cakephp-app/admin/webroot;
индекс index.html index.htm index.php;
место расположения / {
try_files $uri $uri/ /index.php$is_args$args;
включен автоиндекс;
}
расположение ~ \.php$ {
включить фрагменты/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
местоположение ~ /\.ht {
отрицать все;
}
}
Я не мог придумать, что я сделал не так с первым блоком сервера. Любые предложения будут действительно полезны.