Я пытаюсь настроить 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;
}
}
Я наконец решил это, после пары дней работы. Теперь он правильно загружает основной сайт, дочерний сайт 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;
}
}
Других решений пока нет …