@germisten

Как правильно прописать конфиг для директории с CGI скриптом?

Есть директория /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 получалось запустить. Подскажите, пожалуйста, где я допустил ошибку.
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
nginx в принципе не умеет CGI.
Так что вам нужно что-то что будер работать по протоколу fastcgi/http и запускать скрипт. Например https://www.nginx.com/resources/wiki/start/topics/...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы