Веб-сокет SignalR за прокси nginx отключается при возобновлении аренды dhcp - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть два веб-приложения IIS, которые обслуживают соединения веб-сокетов с сигнализатором.

Они находятся за прокси nginx, работающим на рое docker, настроенном так:

# cat nginx.conf
# auto detects a good number of processes to run
worker_processes auto;

#Provides the configuration file context in which the directives that affect connection processing are specified.
events {
    # Sets the maximum number of simultaneous connections that can be opened by a worker process.
    worker_connections 8000;
    # Tells the worker to accept multiple connections at a time
    multi_accept on;
}


http {
    # what times to include
    include       /etc/nginx/mime.types;
    # what is the default one
    default_type  application/octet-stream;

    # Sets the path, format, and configuration for a buffered log write
    log_format compression ' -  [] '
        '""   '
        '"" ""';

    server {
        # resolver 127.0.0.11 valid=30s; ## internal docker dns
        listen   3011; ## listen for ipv4; this line is default and implied
        #listen   [::]:3011 default ipv6only=on; ## listen for ipv6
        # listen on port 80
        listen 80;
        # save logs here
        access_log /var/log/nginx/access.log compression;

        # where the root here
        root /var/www/legacy;
        # what file to server as index
        index index.html index.htm;

        location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to redirecting to index.html
            try_files $uri $uri/ /index.html;
        }

        location ~ ^/admin/(.*)$ {
            resolver 127.0.0.11 valid=30s; ## internal docker dns
            set $upstream_admin http://nginx-admin;
            proxy_pass $upstream_admin/$1;
            proxy_http_version 1.1;
        }
        location ~ ^/admin/ {
            resolver 127.0.0.11 valid=30s; ## internal docker dns
            set $upstream_admin1 http://nginx-admin;
            proxy_pass $upstream_admin1;
            proxy_http_version 1.1;
        }
        location ~ ^/account/(.*)$ {
            resolver 127.0.0.11 valid=30s; ## internal docker dns
            set $upstream_account http://account:8007;
            proxy_pass $upstream_account/$1;
            proxy_http_version 1.1;
        }
        location ~ ^/account/ {
            resolver 127.0.0.11 valid=30s; ## internal docker dns
            set $upstream_account1 http://account:8007;
            proxy_pass $upstream_account1;
            proxy_http_version 1.1;
        }
        location ~ ^/graphql/ {
            resolver 127.0.0.11 valid=30s; ## internal docker dns
            set $upstream_graphql http://graphql:4000;
            proxy_pass $upstream_graphql;
            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;
        }
        location ~ ^/api/(.*) {
            resolver 127.0.0.11 valid=30s; ## internal docker dns.
            set $upstream_api http://z4aweb-2.local-domain:81;
            proxy_pass $upstream_api/$1$is_args$args;
            proxy_http_version 1.1;
        }

        location ~ ^/hub/(.*) {
            resolver 127.0.0.11 valid=30s; ## internal docker dns
            set $upstream_hub http://z4aweb-2.local-domain:83;
            proxy_pass $upstream_hub/$1$is_args$args;
            proxy_http_version 1.1;
        }
        location ~ ^/signalr-hub/(.*) {
            resolver 127.0.0.11 valid=30s; ## internal docker dns
            set $upstream_hub1 http://z4aweb-2.local-domain:83;
            proxy_pass $upstream_hub1/signalr-hub/$1$is_args$args;
            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;
        }
        location ~ ^/changes/(.*) {
            resolver 127.0.0.11 valid=30s; ## internal docker dns
            set $upstream_changes http://z4aweb-2.local-domain:86;
            proxy_pass $upstream_changes/$1$is_args$args;
            proxy_http_version 1.1;
        }
        location ~ ^/signalr-changes/(.*) {
            resolver 127.0.0.11 valid=30s; ## internal docker dns
            set $upstream_changes1 http://z4aweb-2.local-domain:86;
            proxy_pass $upstream_changes1/signalr-changes/$1$is_args$args;
            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;
        }


        # Media: images, icons, video, audio, HTC
        location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
          try_files $uri =404;
          expires 1M;
          access_log on;
          add_header Cache-Control "public";
        }

        # Javascript and CSS files
        location ~* \.(?:css|js)$ {
            try_files $uri =404;
            expires 1y;
            access_log off;
            add_header Cache-Control "public";
        }

        # Any route containing a file extension (e.g. /devicesfile.js)
        location ~ ^.+\..+$ {
            try_files $uri =404;
        }
    }
}# 

( сигнальные изменения и сигнальный концентратор) являются соответствующими конечными точками.

Досадно, что он продолжает отключаться. Ничего не регистрируется ни nginx, ни самими веб-приложениями.

Я отследил, что его вызывает - это сервер linux, на котором запущен рой, продлевающий аренду. h2-2.local-domain - это сервер, и это логи с dhcp-сервера:

Apr 17 21:25:28 gitea dhcpd[15781]: DHCPREQUEST for 192.168.2.33 from 00:1e:06:45:2a:74 (h2-2) via enp2s0
Apr 17 21:25:28 gitea dhcpd[15781]: DHCPACK on 192.168.2.33 to 00:1e:06:45:2a:74 (h2-2) via enp2s0

Теперь я обнаружил, что это не так меня беспокоит, потому что я могу продлить срок аренды и целевая система будет иметь статический c IP в любом случае. Так что я действительно публикую это, чтобы увидеть, видел ли кто-нибудь это и знает ли это правильное решение, а также в случае, если у других есть такая же проблема. .

...