lleo_kaganov (lleo_kaganov) wrote,
lleo_kaganov
lleo_kaganov

Category:

А есть специалисты по 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
Tags: программирование
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 3 comments