Nginx 'listen: port', Cloudflare и SSL

У меня есть два веб-сайта на сервере, каждый со своим собственным файлом vhost в Nginx. Оба они также находятся на Cloudflare, и у обоих есть сертификаты SSL, которые я получил через Let's Encrypt.

Файлы vhosts обоих сайтов выглядят следующим образом:

server {
    server_name domain.co.uk www.domain.co.uk;
    listen 80;
    listen domain.co.uk:80;
    return 301 https://$http_host$request_uri;

    // ...
}

server {
    server_name domain.co.uk www.domain.co.uk;

    listen 443;
    listen domain.co.uk:443;

    // ...
}

Я обнаружил, что если я запрашиваю второй сайт в браузере, иногда он показывает первый сайт. Это из-за общих строк listen [port]; ?

Кроме того, если я делаю запрос SSL, браузер выдает предупреждение системы безопасности для несоответствия имени хоста, потому что он пытается показать SSL первого домена сертификат.

Я обнаружил, что если я сниму слушайте 80; или слушайте 443; , тогда Nginx подойдет, потому что IP-адреса Cloudflare являются динамическими и не соответствуют listen [host]: 443; lines.

Я не уверен, что я принципиально не понимаю Nginx и то, как он работает.

0
задан 25 June 2016 в 15:13
1 ответ

Удалить

listen domain.co.uk:80;

Вот начало одной из моих конфигураций

server_name www.example.com;
listen 443 ssl http2;

ssl_certificate /var/lib/acme/certs/***CERT_DIRECTORY/fullchain;
ssl_certificate_key /var/lib/acme/certs/***CERT_DIRECTORY/privkey;

# Set up preferred protocols and ciphers. TLS1.2 is required for HTTP/2
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

# This is a cache for SSL connections
ssl_session_cache shared:SSL:2m;
ssl_session_timeout 60m;

У меня есть другой сервер для порта 80, который просто перенаправляет на сервер SSL. Учебник здесь .

0
ответ дан 5 December 2019 в 10:14

Теги

Похожие вопросы