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

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 3 comments