Конфигурация местоположения 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
директивы не вместе из-за это давняя ошибка.
курсе предупреждение при использовании