Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Леонид Каганов ([info]lleokaganov)
@ 2016-11-02 22:04:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
А есть специалисты по nginx?
это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/11/02_nginx.html

UPD: Спасибо за советы! Проблема решена! Всё получилось:
try_files $uri $uri/?$args $uri/index.php?$args $uri/index.html $uri/index.htm $uri/index.shtml /index.php?$args;

БЫЛО:

Не поможете исправить давнишний баг в настройках nginx.conf?

Ситуация: у меня на сайте lleo.me стоит мой движок и еще есть очень много папок.

Все неизвестные запросы (типа papka/mamka/juchka) nginx должен отправлять на скрипт движка index.php — тот сам разберется со всеми существующими и несуществующими виртуальными именами.

Но если существует физический файл papka/mamka/juchka — следует отдать именно его, не беспокоя движок.

А если это физическая папка papka/mamka/juchka/ — то следует поискать в ней, вдруг там имеется корневой файл: index.php, index.htm, index.html и совсем старый зеноновский index.shtml, или совсем времен 90-x капслоком INDEX.HTM

Сейчас это не работает. Запросы типа:

http://lleo.me/e
http://lleo.me/e/

Выдают нам, как вы можете видеть, привет от nginx: "403 Forbidden nginx/1.4.6 (Ubuntu)", хотя должны были передавать управление движку. Они бы и передали, если бы папка /e/ не существовала, примерно вот так:

http://lleo.me/not-exist-folder

То есть, когда я указываю не реальную папку, а что-то не существующее в файловой системе физически, только тогда вот только тогда nginx передает управление движку, а тот исправно находит в своей базе искомое e/index.htm и честно его отрисовывает:

http://lleo.me/e/index.htm

В чем проблема — не знаю, я не спец в nginx.

Конфиг со всеми вышеописанными ошибками сейчас такой ИСПРАВЛЕННЫЙ КОНФИГ ДОЛЖЕН ВЫГЛЯДЕТЬ ТАК:

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /var/www/website;

index index.html index.htm index.php index.shtml;

server_name lleo.me;
client_max_body_size 80M;

location /hidden {
deny all;
return 404;
}

location / {

try_files $uri $uri/ /index.php;
try_files $uri $uri/?$args $uri/index.php?$args $uri/index.html $uri/index.htm $uri/index.shtml /blog/index.php?$args;

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;

# With php5-fpm:
fastcgi_pass unix:/var/run/home-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 50m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

fastcgi_param QUERY_STRING qnginx=$request_uri;

}
}

}

Есть идеи?


UPD:

Путанно я объяснил. Суть в том, что при вызове комбинации букв, которая совпадает с реально существующей папкой, nginx кидается искать в ней index.php или index.htm и если не находит, так остро огорчается, что выдает ошибку. А должен — передать управление движку, как во всех остальных случаях. Как крайний вариант, меня даже устроит, если nginx вообще перестанет искать в папке index.php и index.htm — мне не проблема это сделать средствами своего движка.

UPD:

Любопытное заметил: первый раз обращение к 'lleo.me/pesni' (оставим примеры с '/e', а то в комментах люди думают, будто проблема только в папке '/e') вызывает переадресацию на 'lleo.me/pesni/', и только затем — ошибка 403:
$ wget http://lleo.me/e
--2016-11-03 00:20:29-- http://lleo.me/e
Resolving lleo.me (lleo.me)... 104.18.36.157, 104.18.37.157, 2400:cb00:2048:1::6812:259d, ...
Connecting to lleo.me (lleo.me)|104.18.36.157|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://lleo.me/e/ [following]
--2016-11-03 00:20:29-- http://lleo.me/e/
Reusing existing connection to lleo.me:80.
HTTP request sent, awaiting response... 403 Forbidden
2016-11-03 00:20:29 ERROR 403: Forbidden.

К сожалению, к движку nginx все равно не обращается ни в первый запрос, ни во второй.



это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/11/02_nginx.html


(Читать комментарии)

Добавить комментарий:

Как:
( )анонимно- этот пользователь отключил возможность писать комментарии анонимно
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Имя пользователя:
Пароль:
Тема:
HTML нельзя использовать в теме сообщения
Сообщение:



Обратите внимание! Этот пользователь включил опцию сохранения IP-адресов пишущих комментарии к его дневнику.