Есть ли способ обновить только соединения SignalR WebSocket в вашем файле nginx.conf
без дублирования всего раздела?
Ядро ASP.NET отклоняет мои соединения SignalR, когда они не обновлены, однако я не могу »я запускаю API в том проекте ASP.NET Core, который не будет принимать POST-запрос с телами, если у запросов есть заголовок «Connection:« upgrade »».
Мое текущее решение - просто продублировать «location»"раздел в моем nginx.conf
файле, как вы видите ниже.Есть ли более элегантное решение?
Спасибо!
Мой nginx.conf
файл:
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
include /etc/nginx/mime.types;
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
location / {
proxy_pass http://ui:80;
rewrite ^/(.*)$ /$1 break;
}
location /shopvac/signalr {
proxy_pass http://shopvac:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
rewrite ^/shopvac/(.*)$ /$1 break;
}
location /shopvac {
proxy_pass http://shopvac:80;
rewrite ^/shopvac/(.*)$ /$1 break;
}
}
}
Мой docker-compose.yaml
файл:
version: "3"
networks:
proxy:
database:
volumes:
database-data:
services:
proxy:
image: nginx:latest
depends_on:
- ui
- shopvac
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./logs/nginx:/var/log/nginx
ports:
- "80:80"
- "443:443"
networks:
- proxy
database:
image: postgres:latest
volumes:
- database-data:/var/lib/postgresql/data
expose:
- "5432"
networks:
- database
environment:
- POSTGRES_DB=home-system
- POSTGRES_USER=home-system
ui:
build:
context: ./ui
dockerfile: Dockerfile
expose:
- "80"
networks:
- proxy
shopvac:
build:
context: ./shopvac
dockerfile: Dockerfile
depends_on:
- database
volumes:
- /app
expose:
- "8080"
networks:
- proxy
- database