Назад | Перейти на главную страницу

Адрес / порт обратного прокси-сервера nginx уже используется

У меня есть обратный прокси-сервер nginx, и я хотел бы, чтобы он перенаправлял трафик на несколько сайтов и прослушивал порт 443 для всех этих служб. Я видел, как это делалось в нескольких местах, и похоже, что это нормальный способ установки обратного прокси ... он прослушивает один порт и пересылает на основе URL-адреса.

Однако у меня есть некоторые настройки, которые я считаю немного странными, потому что у меня есть сайт, который использует проверку NTLM через сайт IIS, и поэтому я использую поток nginx

Вот мои текущие файлы конфигурации:

/opt/nginx/nginx.conf

stream {
    upstream backend {
        hash $remote_addr consistent;
        server mysite.domain.com:80 weight=5;
        server 192.168.0.5 max_fails=3 fail_timeout=30s;
    }

    server {
        listen 192.168.0.2:443 ssl;
        ssl_certificate /usr/local/nginx/conf/mycert.crt;
        ssl_certificate_key /usr/local/nginx/conf/mykey.key;
        ssl_session_cache shared:SSL:10m;

        ssl_session_timeout 5m;

        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass backend;
    }
}

http {
    include mime.types;
    default_type application/octet-stream;

    sendfile on;
    keepalive_timeout 65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
    include /opt/nginx/sites-enabled/*;
}

/ opt / nginx / сайты-доступные / по умолчанию

server {
        listen 80 default;
        server_name _;
        return 301 https://$host$request_uri;
}

server {

        listen 192.168.0.2:443 ssl;
        server_name myothersite.domain.com;

        ssl_certificate /usr/local/nginx/conf/mycert.crt;
        ssl_certificate_key /usr/local/nginx/conf/mykeykey;

        ssl_session_timeout 5m;

        ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
        ssl_prefer_server_ciphers on;

        location / {
                proxy_pass http://192.168.0.6:80;
                proxy_set_header Host $host;

                proxy_redirect http:// $scheme://;

        }
}

Когда я перехожу к перезапуску nginx, я получаю сообщение об ошибке

bind() to 127.0.0.1:443 failed (98: Address already in use)

Я думал, что под каждым server вы могли бы заставить его прослушивать тот же порт, но это, похоже, не работает.

Если я удалю поток все вместе и просто использую два других сайта, которые не используют поток, это будет нормально работать с несколькими server разделы.

Согласно официальная документация - Разные серверы должен прослушивать другой адрес: пары портов.