#nginx #grpc
#nginx #grpc
Вопрос:
Я пытаюсь создать единый сервер на nginx, обслуживающий как маршруты http2, так и традиционные маршруты http1, моя проблема в том, что я не могу заставить его работать нормально.
Когда я пытаюсь получить доступ к своему приложению во вложенной папке, которое работает на gunicorn flask, я получаю загружаемый файл с некоторым двоичным файлом
Как я могу обслуживать оба?
server {
listen 80 http2;
access_log /dev/stdout main;
rewrite_log on;
error_log /dev/stdout debug;
location /some.Service {
grpc_pass grpc://srvadd:10116;
}
location /password-reset {
proxy_pass http://flask:8000;
}
}
Комментарии:
1. Если вы удалите конечную точку gRPC,
proxy_pass
будет ли после этого работать Flask должным образом или проблема сохранится?2. Вы нашли решение? Я получаю точно такую же проблему, и мне трудно найти какую-либо соответствующую проблему в сети…
Ответ №1:
хм, обслуживание трафика http и http2 на одном сервере nginx должно работать. Это один из примеров nginx.conf, который работает для нас
server {
listen 8080;
listen 8443 http2;
server_name localhost;
location / {
grpc_pass localhost:9090;
}
}
Я не совсем уверен, но работает ли порт 80 с http2? Я думаю, что может быть какое-то ограничение на то, какой номер порта вы можете использовать с http2?
еще один немного более сложный пример
server {
listen [::]:$0;
listen [::]:$1 http2;
server_name localhost;
location /grpc.gateway.testing.EchoService/ {
grpc_pass localhost:$2;
grpc_channel_reuse on;
grpc_ssl $3;
grpc_ssl_target_name_override $4;
grpc_ssl_pem_root_certs "$5";
grpc_ssl_pem_private_key "$6";
grpc_ssl_pem_cert_chain "$7";
grpc_client_liveness_detection_interval 10ms;
add_header Access-Control-Allow-Origin * always;
}
}