Здравствуйте, Максим!
On 15.12.2021 1:33, Maxim Dounin wrote:
> Воспроизводится ли проблема на приведённом конфиге в чистом виде,
> без каких-либо других location'ов и/или rewrite'ов? Если да - то
> как выглядит минимальный конфиг, на котором проблема
> воспроизводится, полностью (nginx -T)? Что показывает nginx -V?
> Что в debug log'е?
Воспроизводится на таком конфиге:
# nginx -T
error_log /var/log/nginx/error.log debug;
events { use epoll; }
http {
server {
server_name example.com;
location / { proxy_pass http://127.0.0.1; }
location /download/ { proxy_pass http://127.0.0.2; }
}
}
# nginx -V показывает nginx version: nginx/1.21.4
- это официальный бинарник nginx-1.21.4-1.el8.ngx.x86_64.rpm
с сайта http://nginx.org/packages/mainline/centos/8/x86_64/RPMS/
В debug log'е так:
http process request line
http request line: "GET /download HTTP/1.1"
http uri: "/download"
http args: ""
http exten: ""
posix_memalign: 000055D246233D50:4096 @16
http process request header line
http header: "Host: example.com"
http header: "User-Agent: curl/7.61.1"
http header: "Accept: */*"
http header done
event timer del: 3: 29402186335
generic phase: 0
rewrite phase: 1
test location: "/"
test location: "download/"
using configuration "/download/"
http cl:-1 max:1048576
http finalize request: 301, "/download?" a:1, c:1
http special response: 301, "/download?"
http set discard body
HTTP/1.1 301 Moved Permanently
Server: nginx/1.21.4
Date: Wed, 15 Dec 2021 06:54:06 GMT
Content-Type: text/html
Content-Length: 169
Location: http://example.com/download/
Connection: keep-alive
Перечитал еще раз документацию на сайте nginx.org
- запрос "/download" должен попадать в location "/"
Но запрос "/download" обрабатывается в location "/download/"
это BUG в самом nginx или это BUG в документации к nginx ?
Проверил на такой конфигурации:
# nginx -T
error_log /var/log/nginx/error.log debug;
events { use epoll; }
http {
server {
server_name example.net;
location / { return 200 "main locaton\n\n"; }
location /download/ { return 200 "download location\n\n"; }
}
}
Тут все отрабатывает как и должно быть согласно документации.
В debug log'е так:
http process request line
http request line: "GET /download HTTP/1.1"
http uri: "/download"
http args: ""
http exten: ""
posix_memalign: 000055D24625B920:4096 @16
http process request header line
http header: "Host: example.net"
http header: "User-Agent: curl/7.61.1"
http header: "Accept: */*"
http header done
event timer del: 3: 29403087747
generic phase: 0
rewrite phase: 1
test location: "/"
test location: "download/"
using configuration "/"
http cl:-1 max:1048576
rewrite phase: 3
http set discard body
HTTP/1.1 200 OK
Server: nginx/1.21.4
Date: Wed, 15 Dec 2021 07:09:07 GMT
Content-Type: text/plain
Content-Length: 14
Connection: keep-alive
--
Best regards,
Gena
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru