NGINX не понимает ЧПУ (SEF) адреса

Обсуждение установки и настройки поддерживаемых вебсерверов, а также работы с ними.
Ответить
dmitry_stas
Сообщения: 207
Зарегистрирован: Вт апр 17, 2018 7:43 am

NGINX не понимает ЧПУ (SEF) адреса

Сообщение dmitry_stas » Пн авг 20, 2018 12:00 pm

При включении обработки статики Нгинксом создается такая конфигурация, при которой несуществующие статические файлы НЕ перенаправляются на бекенд, а просто отдается 404. Соответственно, динамическое создание человекопонятных url во многих CMS (Joomla и другие) не работает. Несуществующие статические файлы нужно перебрасывать на бекенд, примерно как то так

Код: Выделить всё

location / {
	location / {
		try_files /does_not_exists @fallback;
	}
	location ~* ^.+\.(bmp|png|ico|jpe?g|svg|gif|css|js|html?|docx?|xlsx?|pdf|txt|mp3|ogg|swf|wmlc?|wmlsc?|wbmp|fla|flv|mpe?g|avi|eot|ttf|woff|woff2)$ {
		try_files $uri $uri/ @fallback;
	}
	location ~ [^/]\.ph(p\d*|tml)$ {
		try_files /does_not_exists @fallback;
	}
}
а в location @fallback уже описать проксирование на бекенд

dmitry_stas
Сообщения: 207
Зарегистрирован: Вт апр 17, 2018 7:43 am

Re: NGINX не понимает ЧПУ (SEF) адреса

Сообщение dmitry_stas » Ср сен 05, 2018 2:46 pm

уважаемые разработчики, хотя бы просто понимать - изменения будут / не будут?

Аватара пользователя
sbury
Сообщения: 1344
Зарегистрирован: Вт фев 06, 2018 7:51 am

Re: NGINX не понимает ЧПУ (SEF) адреса

Сообщение sbury » Ср сен 05, 2018 4:43 pm

можете показать лог, где он пытается искать данные файлы. А вот причину уже потом посмотрим

dmitry_stas
Сообщения: 207
Зарегистрирован: Вт апр 17, 2018 7:43 am

Re: NGINX не понимает ЧПУ (SEF) адреса

Сообщение dmitry_stas » Ср сен 05, 2018 5:36 pm

откровенно говоря не понял, о каком логе речь. смотрите, при включении для сайт опции "Обрабатывать статику через nginx для этих расширений" и указания например расширения html, в виртуалхосте создается запись вида
location ~* ^.+\.(html)$ {
root /home/user/sites/site.com;
proxy_set_header Host $host;
}
т.е. это расширение обрабатывается только nginx, и вообще не проксируется на бекенд. а нужно чтобы если файла с этим расширением не оказалось, то nginx должен был передать управление апачу, а не отдать 404. потому что на самом деле /katalog/instrumenty.html это не обращение к файлу, а обращение к ЧПУ (человеко понятному урл), который должен обработать движок сайта. другим подобным примером может быть карта сайта /sitemap.xml, которая на самом деле генерируется динамически движком сайта, a файла sitemap.xml на самом деле не существует. и так далее. в общем основное - это чтобы если nginx не нашел файла который искал, то не 404 молча отдал, а передал на бекенд управление.

Аватара пользователя
sbury
Сообщения: 1344
Зарегистрирован: Вт фев 06, 2018 7:51 am

Re: NGINX не понимает ЧПУ (SEF) адреса

Сообщение sbury » Ср сен 05, 2018 7:42 pm

Что у вас в качестве initial root директивы выборки в корне сервера?

location ~* ^.+\.(html)$ {
index index.html;
root /home/user/sites/site.com;
proxy_set_header Host $host;
}

можете показать весь конфиг? Мне так трудно понять структурные зависимости

dmitry_stas
Сообщения: 207
Зарегистрирован: Вт апр 17, 2018 7:43 am

Re: NGINX не понимает ЧПУ (SEF) адреса

Сообщение dmitry_stas » Ср сен 05, 2018 8:50 pm

абсолютно стандартный конфиг, который делает панель для связки nginx+apache
server {
listen 11.22.33.44:80 ;
server_name site.com ;
root /home/user/sites/site.com;


access_log /etc/nginx/vhost_logs/site.com_access;
error_log /etc/nginx/vhost_logs/site.com_error;






location ~ /.well-known { allow all; }

# location ~* robots.txt { root /etc/nginx; }

location ~ /\.ht {
deny all;
access_log off;
log_not_found off;
}

gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_comp_level 3;
gzip_types text/plain text/css application/json application/x-javascript text/html text/xml application/xml application/xml+rss text/javascript application/javascript;

location ~* ^.+\.(html)$ {
root /home/user/sites/site.com;
expires 86400s;
proxy_set_header Host $host;
}

location / {
root /home/user/sites/site.com;
proxy_pass http://11.22.33.44:8080;
proxy_redirect off;
proxy_force_ranges on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_cache one;
proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
#access_log /etc/nginx/vhost_logs//home/user/sites/site.com;

proxy_cache_valid 3s;
proxy_cache_min_uses 2;
# proxy_cache_lock on;
# proxy_cache_use_stale error timeout;
# proxy_cache_use_stale updating http_502 http_504;

limit_conn lone 30;
# limit_req zone=ltwo burst=10;

client_max_body_size 24m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 8 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 10m;


}





error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

dmitry_stas
Сообщения: 207
Зарегистрирован: Вт апр 17, 2018 7:43 am

Re: NGINX не понимает ЧПУ (SEF) адреса

Сообщение dmitry_stas » Вс фев 17, 2019 8:32 am

Ув. разработчики, есть какие либо новости по теме? А то очень неудобно донастраивать каждый виртуалхост

Ответить