У меня есть существующий сервер, который хорошо работает, на нем размещено несколько сайтов, использующих nginx и ISPconfig. Однако я создал новый сайт и хочу использовать Laravel.
Я успешно установил Laravel через композитор и дошел до того, что увидел знакомую приветственную колонку, отображаемую при посещении mywebsite.com/public.
Что я хочу сделать дальше, так это сделать несколько чистых URL-адресов. Мой опыт работы с файлами vhost несколько ограничен, и у меня возникли проблемы с конфигурацией.
Мой файл маршрутов выглядит так
Route::get('/', function () {
return view('welcome');
});
Route::get('/test', function () {
return view('test');
});
и я надеялся, что mywebsite.com/test отобразит содержимое test.blade.php
Я знаю, что мне нужно немного поработать с файлом vhost, прежде чем я смогу ожидать, что это сработает, но мой опыт работы с vhosts ограничен, и я немного растерялся.
Мой текущий файл выглядит так
server {
listen *:80;
server_name mywebsite.com ;
root /var/www/mywebsite.com/web;
index index.html index.htm index.php index.cgi index.pl index.xhtml;
error_page 400 /error/400.html;
error_page 401 /error/401.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 405 /error/405.html;
error_page 500 /error/500.html;
error_page 502 /error/502.html;
error_page 503 /error/503.html;
recursive_error_pages on;
location = /error/400.html {
internal;
}
location = /error/401.html {
internal;
}
location = /error/403.html {
internal;
}
location = /error/404.html {
internal;
}
location = /error/405.html {
internal;
}
location = /error/500.html {
internal;
}
location = /error/502.html {
internal;
}
location = /error/503.html {
internal;
}
error_log /var/log/ispconfig/httpd/mywebsite.com/error.log;
access_log /var/log/ispconfig/httpd/mywebsite.com/access.log combined;
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location /stats/ {
index index.html index.php;
auth_basic "Members Only";
auth_basic_user_file /var/www/clients/client1/web5/web/stats/.htpasswd_stats;
}
location ^~ /awstats-icon {
alias /usr/share/awstats/icon;
}
location ~ \.php$ {
try_files /5e26a1d85cb98f7191261e023385e60d.htm @php;
}
location @php {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/lib/php5-fpm/web5.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}
}
Теперь на другом сервере у меня это работает с этой простой директивой
server {
root /var/www/public;
index index.php index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
}
Но я ограничен тем, что я могу сделать с виртуальным хостом на текущем сервере, так как ISPconfig пишет большую часть этого для меня и отказывается писать приведенную выше конфигурацию, которая работала в другом месте. Также я чувствую, что редактирование файла напрямую будет плохой практикой, я всегда был бы на грани того, что ISPconfig перепишет файл для меня, поэтому я не совсем уверен, как лучше поступить с этим.
Мои варианты заключались бы в том, чтобы просто пойти дальше и отредактировать vhost и надеяться на лучшее, но если я это сделаю, как я могу гарантировать, что ISPconfig не сможет перезаписать файл, не прибегая к «хакерским» методам?
В качестве альтернативы, есть ли конфигурация, которую я могу ввести через ISPconfig, которая позволит перезаписывать правильно так, как это подходит Laravel? В этом случае любая введенная директива должна иметь приоритет над предложением ~ .php$, поскольку оно записывается ISPconfig перед любыми директивами, введенными через панель управления.