Я пытаюсь настроить несколько webapp на моем веб-сервере nginx, но я не могу получить одно приложение Laravel, которое требует, чтобы $ document_root устанавливался в общую папку laravel. В настоящее время я пытаюсь настроить его с помощью директивы alias, но по неясной причине это не работает. Вот что я пытаюсь сделать.Как правильно настроить директиву alias в nginx?
# Default server configuration
#
server {
listen 80;
# SSL configuration
#
listen 443 ssl;
error_log /var/log/nginx/error.log warn;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
set $root_path '/var/www/html';
root $root_path;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;
server_name localhost;
location /paperwork {
alias /var/www/html/paperwork/frontend/public;
try_files $uri $uri/;
#location ~ \.php {
# fastcgi_split_path_info ^(.+\.php)(.*)$;
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# include /etc/nginx/fastcgi_params;
# #fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
# #fastcgi_intercept_errors on;
#}
}
#location @paperwork {
# rewrite /paperwork/(.*)$ /paperwork/index.php/$1 last;
#}
location/{
}
location /wallabag {
try_files $uri $uri/ /index.php;
}
location /laverna {
try_files $uri/ /index.php;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
# With php5-cgi alone:
#fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#try_files $uri $uri/ =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
location ~ /\.ht {
deny all;
}
}
Чтобы проверить мой «псевдоним» конфиг я положить файлы «test.php» в /var/www/html/paperwork/frontend/public/test.php и попытался получить к нему доступ через https://IP/paperwork/test.php. Я получаю ошибку 404 и ничего в журнале ошибок nginx. Если я попробую https://IP/paperwork/frontend/public/test.php в браузере, он отобразит файл test.php без ошибок. Ничего не меняется, если я раскомментирую строку try_files в местоположении php.
Если я копирую test.php в /var/www/html/paperwork/test2.php и получает доступ к https://IP/paperwork/test2.php, файл отображается без ошибок, поэтому я могу видеть здесь, что псевдоним не работает, поскольку нет test2. php в общедоступном каталоге документации.
У меня может быть другое поведение, если я раскомментирую расположение php внутри места работы с документами. При этом запросы, такие как https://IP/paperwork/test.php, не отображают 404, а пустой экран.
Я через многих форумов/вопросы, связанные с этим, но я не мог получить рабочий конфиг для простой задачи, как отображение test.php ...
Спасибо!
Это меня колотило месяцами, спасибо. – demure
Да! Спасибо. Ключ использовал '$ request_filename'. У каждого другого примера был 'fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name', но это не сработало. – heisian