Конфигурация местоположения Nginx (вложенные папки)
скажем, у меня есть путь, как:
/var/www/myside/
этот путь содержит две папки... скажем
/static и /manage
Я хотел бы настроить nginx для доступа к:
на / (напр. http://example.org/)
в этой папке есть некоторые .HTML-файл.
на /manage (напр. http://example.org/manage) в этом случае эта папка содержит PHP-код Slim-это означает индекс.php-файл в public папку (например. /var / www/mysite/управление/public / index.в PHP)
Я пробовал много комбинаций, таких как
server {
listen 80;
server_name example.org;
error_log /usr/local/etc/nginx/logs/mysite/error.log;
access_log /usr/local/etc/nginx/logs/mysite/access.log;
root /var/www/mysite;
location /manage {
root $uri/manage/public;
try_files $uri /index.php$is_args$args;
}
location / {
root $uri/static/;
index index.html;
}
location ~ .php {
try_files $uri =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
}
}
на / работает правильно в любом случае manage не делает. Я делаю что-то не так? Кто-нибудь знает, что мне изменить?
Мэтью.
1 ответов
для доступа к пути, как /var/www/mysite/manage/public С URI как /manage, вам нужно будет использовать alias, а не root. См.документ для сведения.
я предполагаю, что вам нужно запустить PHP из обоих корней, в этом случае вам понадобится два location ~ \.php блоки, см. пример ниже. Если у вас нет PHP в /var/www/mysite/static, вы можете удалить неиспользуемые location блок.
например:
server {
listen 80;
server_name example.org;
error_log /usr/local/etc/nginx/logs/mysite/error.log;
access_log /usr/local/etc/nginx/logs/mysite/access.log;
root /var/www/mysite/static;
index index.html;
location / {
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
location ^~ /manage {
alias /var/www/mysite/manage/public;
index index.php;
if (!-e $request_filename) { rewrite ^ /manage/index.php last; }
location ~ \.php$ {
if (!-f $request_filename) { return 404; }
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
}
на ^~ модификатор вызывает префикс место, чтобы взять верх над регулярных выражений на том же уровне. См.документ для сведения.
на alias и try_files директивы не вместе из-за это давняя ошибка.
курсе предупреждение при использовании