Nginx + Docker + ASP Net core
Пытаюсь обратно проксировать веб сервис на ASP Net Core.
Контейнер встает и все хорошо. Могу даже сделать GET запрос через curl находясь в другом контейнере:

Рис. 1 (нахожусь в контейнере с Nginx)
Nginx тоже встает корректно и я могу вызывать другой точно также проксированный сервис (/friday/), но с одним ньюансом - он написан на python.
Конфигурации одинаковые практически, но при этом /vkcore возвращает 404 при любом запросе.
docker-compose.yml
version: "3.7"
services:
fcore:
restart: on-failure
build: ./Friday_Core
command: python3 main.py
ports:
- 7000:7000
links:
- db
nginx:
build:
context: .
dockerfile: ./nginx/dockerfile
ports:
- 8005:80
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/logs:/var/log/nginx
vkcore:
build: ./Friday_VkCore
restart: on-failure
Постарался налить только самой нужной конфигурации. Но вообще, т.к. я могу делать GET из контейнера в контейнер, то сети внутренние настроены правильно и проблема где-то в Nginx.
Конфигурация nginx:
worker_processes auto;
events {
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream vkcore {
server vkcore:80;
}
server {
listen 80;
location /supervisor {
resolver 127.0.0.11 ipv6=off;
set $target http://supervisor:6006;
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_pass $target;
}
location /friday {
resolver 127.0.0.11 ipv6=off;
set $target http://fcore:7000;
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_pass $target;
}
location /vkcore/ {
proxy_pass http://vkcore;
proxy_redirect off;
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_set_header X-Forwarded-Host $server_name;
}
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
}
}
}
Примеры запросов из контейнера nginx:
Ответы (1 шт):
Поскольку я могу обратиться к сервису по пути <URL>/threads, а в Nginx я сначала обращался по пути /vkcore, то по итогу в сервис приходил путь /vkcore/threads.
Именно поэтому он и возвращал 404.
Решено путем использования rewrite:
location /vkcore {
resolver 127.0.0.11 ipv6=off;
rewrite /vkcore/(.*) /$1 break;
proxy_pass http://vkcore_stream;
proxy_redirect off;
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_set_header X-Forwarded-Host $server_name;
}
