WedX - журнал о программировании и компьютерных науках

Перезапись Nginx вообще не работает

Я пытаюсь настроить Piwigo для работы на Nginx, но у меня возникли некоторые проблемы со ссылками, которые должны содержать и index.php, например: foto.domain.net/index.php/category/3

Кажется простой задачей переписать /index/category/3 в /index.php/category/3, но что бы я ни писал в этих переписываниях, я заканчиваю с ошибкой 404 и никогда не меняющейся записью в журнале ошибок, которая выглядит так:

open() "/srv/http/foto/index/category/3" failed (2: No such file or directory), client: 94.242.246.23, server: ~^(?<prefix>www)?\.?(?<subdomain>[a-z]+)?\.domain\.net$, request: "GET /index/category/3 HTTP/1.1", host: "foto.domain.net", referrer: "https://foto.domain.net/"

Журнал ошибок выглядит так же, даже если я добавляю мусор в строку перезаписи, например:

rewrite ^/index((/|$).*)$ /JUNK_index.php$1 last;

Так что часть перезаписи как-то ошибочна, но я не могу понять...

server {
    listen       80;
    server_name  domain.net;
    return       301 $scheme://www.domain.net$request_uri;
}

server {
	listen 80;
	server_name "~^(?<prefix>www)?\.?(?<subdomain>[a-z]+)?\.domain\.net$";
	root /srv/http/$subdomain;

	location @rewrites {
   		rewrite ^/picture((/|$).*)$ /picture.php$1 last;
   		rewrite ^/index((/|$).*)$ /index.php$1 last;
   		# The following is needed for batch operations which use i.php
   		rewrite ^/i((/|$).*)$ /i.php$1 last;
	}

	location /$subdomain {
   		index index.php index.html;
   		try_files $uri $uri.php $uri/ @rewrites;
	}
	
	location ~ ^(?<script_name>.+?\.php)(?<path_info>/.*)?$ {
   		try_files $script_name = 404;
   		fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
   		fastcgi_param PATH_INFO $path_info;
   		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   		include fastcgi_params;
	}
}


  • Я исправил это в конце после многих изменений. Самым важным было перемещение перезаписи в блоке location / {}, потому что try_files ... @rewrites; у меня вообще не работало. 05.05.2015
  • location /$subdomain это ерунда. Вы не можете использовать переменные в местоположении. Он буквально соответствует запросу /$subdomain, а это не то, что вы ожидаете. 05.05.2015

Ответы:


1

В общих чертах, как контрольный список:

  • убедитесь, что целевой/посадочный URI существует
  • это должно иметь вывод «переписать»: nginx 2>&1 | grep -i -o переписать
  • проверьте свою ошибку и журнал доступа
27.11.2018
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]