Есть директория /srv/http:
├── test.db
├── test.sh
└── styles
└── style.css
test.sh
, разумеется, составляет html-страничку, которая читает таблицу стилей
styles/style.css
. Скрипт должен исполняться при вызове, например,
localhost. Также, скрипт должен читать параметры адресной строки и обрабатывать их. Таким образом,
localhost/shit,
localhost/fuck,
localhost/cringe nginx должен перебрасывать на скрипт, в то время как
localhost/styles должна обрабатываться как директория, чтобы html мог нормально читать стили.
Сейчас я нагуглил разное и соединил в одно:
server {
listen 80;
root /srv/http;
index test.sh;
server_name localhost;
charset utf-8;
location /styles/ {
location ~ \.(?:jpg|jpeg|gif|png|ico|css|js)$ {
log_not_found off;
expires 90d;
gzip on;
gzip_types text/plain text/css application/x-javascript text/javascript;
gzip_static on;
gzip_http_version 1.1;
gzip_comp_level 8;
}
return 404;
}
location / {
fastcgi_split_path_info ^(.+?\.sh)(/.*)$;
fastcgi_pass unix:/run/fcgiwrap.sock;
fastcgi_index test.sh;
include fastcgi_params;
}
}
Главная страница работает нормально, но остальные выдают ошибку 403. В файловой системе это невозможно -- я даже поставил 777 на всю директорию. Ошибки скрипта тоже не может быть, потому что на Apache получалось запустить. Подскажите, пожалуйста, где я допустил ошибку.