Laravel в подпапке на nginx

Я пытаюсь настроить nginx так, чтобы я мог запустить основной сайт из /, а затем запустить новый сайт Laravel из / myapp. Я уже избавился от необходимости / myapp / public в самом приложении (часть общих папок), поэтому все, что мне нужно, это правильно обслуживать эту папку / myapp. Прямо сейчас я могу получить доступ к домашней странице / правильно, но новое приложение Laravel в / myapp выдает 404: nginx / 1.4.6 (Ubuntu). Я разместил свой конфиг nginx ниже. Это работает в Ubuntu на AWS, если это поможет.

Спасибо!

[ОБНОВЛЕНИЕ!] — теперь у меня все работает как из корневого каталога, так и из папки приложения / myapp Laravel, за исключением того, что ресурсы, похоже, не работают. Например http://example.com/myapp/public/css/app.css 404, как и другие файлы js и css. Не уверен, что вызывает это. Я удостоверился, что у общей папки есть полные права, по крайней мере, для целей тестирования. Также проверил владельца / группу, что совпадает со всеми моими другими файлами, которые отлично работают, ubuntu: ubuntu.

server {

listen  80;
server_name *.example.com;
set $root_path '/usr/share/nginx/html/';
root $root_path;

index index.php index.html index.htm;

try_files $uri $uri/ @rewrite;

location @rewrite {
rewrite ^/(.*)$ /index.php?_url=/$1;
}

location ~ \.php {

fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index /index.php;

include /etc/nginx/fastcgi_params;

fastcgi_split_path_info       ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO       $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
allow all;
}

rewrite ^/myapp/?(.*)$ /myapp/index.php?$1 last;

location /myapp {
allow all;
}

location ~ /\.ht {
deny all;
}

}

2

Решение

Я наконец решил это, после пары дней работы. Теперь он правильно загружает основной сайт, дочерний сайт Laravel и все ресурсы. Вот окончательный конфиг, для справки.

server {

listen  80;
server_name *.example.com;
set $root_path '/usr/share/nginx/html/';
root $root_path;

index index.php index.html index.htm;

try_files $uri $uri/ @rewrite;

location @rewrite {
rewrite ^/myapp/?(.*)$ /index.php?$1;
}

location ~ \.php {

fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index /index.php;

include /etc/nginx/fastcgi_params;

fastcgi_split_path_info       ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO       $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
allow all;
}

location ~* ^/myapp/?(.+)/(css|img|js|flv|swf|download)/(.+)$ {
allow all;
}

location ~ \.css {
add_header  Content-Type    text/css;
}

location ~ \.js {
add_header  Content-Type    application/x-javascript;
}

location /myapp {
allow all;
rewrite ^/myapp/?(.*)$ /myapp/index.php?$1 last;
}

location ~ /\.ht {
deny all;
}

}

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru