sykobeats
@sykobeats
Developer

Как правильно настроить nginx — домен на ssl, поддомен на 80 порту?

Доброго времени суток уважаемые.

  • Есть домен site.ru (c сертификатом SSL)
  • Есть поддомен m.site.ru мобильная версия сайта (без сертификата)
  • Есть домен cdn-site.ru для статики - фотки, и др... (с сертификатом).


Пытаюсь получить бесплатный сертификат (letsencrypt.org) для домена m.site.ru, но чтобы его получить нужно подтвердить владение доменом. Т.к. сертификата еще нет, попытался настроить хост на 80-м порту.

При входе на m.site.ru мозила и др. браузеры ругаются
Веб-сайт m.site.ru использует механизм HSTS. Открыть сайт в настоящее время нельзя.....


NGINX почему то вместо мобильной версии открывает https://m.site.ru и при этом загружает конфиг от статики , домена cdn-site.ru.
В DNS записях для домена site.ru , я добавил A запись "m" и указал IP сервера.
Все домены смотрят на 1 IP адрес. (сервер с выделенным ip).

Пните плз в нужном направлении (замечания по конфигу приветствуются, так же отмечу в конце ваш ответ решением).
Ниже все мои конфиги nginx

Конфиг для статики

# Для отображения картинок, если прилетел запрос http://cdn-site.ru/***.jpg
server {
    listen 80;
    server_name cdn-site.ru;

    location ~* \.(?:jpe?g|png)$ {
        expires max;
        access_log off;
        log_not_found off;
        root /data/pics/www/;
    }
}

# Для отображения картинок, если прилетел запрос https://cdn-site.ru/***.jpg
server {
    listen 443 ssl;
    server_name cdn-site.ru www.cdn-site.ru;

    ssl on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    ssl_certificate /etc/nginx/ssl/cdn-site_ru.cert;
    ssl_certificate_key /etc/nginx/ssl/cdn-site_ru.key;

    ssl_stapling on;
    ssl_session_timeout 10m;
    ssl_session_cache shared:SSL:2m;

    location ~* \.(?:jpe?g|png)$ {
        expires max;
        access_log off;
        log_not_found off;
        root /data/pics/www/;
    }
}


Настройки для site.ru

# Переадресация c site.ru www.site.ru на https://site.ru
server {
    listen 80;
    server_name site.ru www.site.ru;

    return 301 https://site.ru$request_uri;
}


# Переадресация c https://www.site.ru на https://site.ru 
server {
    listen 443 ssl;
    server_name www.site.ru;

    ssl_stapling on;
    ssl on;
    ssl_session_cache shared:SSL:2m;

    ssl_certificate /etc/nginx/ssl/site_ru.cert;
    ssl_certificate_key /etc/nginx/ssl/site_ru.key;

    ssl_session_timeout 24h;
    ssl_session_cache shared:SSL:2m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    add_header Strict-Transport-Security "max-age=31536000;";
    add_header Public-Key-Pins 'pin-sha256="base64+info1="; max-age=31536000' always;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options DENY;

    return 301 https://site.ru$request_uri;
}


server {
    listen 443 ssl;
    server_name site.ru default_server;

    ssl_stapling on;
    ssl on;
    ssl_session_cache shared:SSL:2m;

    ssl_certificate /etc/nginx/ssl/site_ru.cert;
    ssl_certificate_key /etc/nginx/ssl/site_ru.key;
    ssl_dhparam /etc/nginx/keys/dhparam.pem;

    ssl_session_timeout 24h;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    ssl_ciphers ОАРВВ-RSA-........... (почистил)
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:2m;

    add_header Content-Security-Policy-Report-Only "default-src https:;
 script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline';
 img-src https: data:; font-src https: data:; report-uri /csp-report";

    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options DENY;
    add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';

    client_body_buffer_size 1K;
    client_header_buffer_size 2k;
    client_max_body_size 12m;
    large_client_header_buffers 2 1k; 

    root /home/www/site.ru/www;

    location / {
        index index.php;
        try_files $uri $uri/ @siteru;
    }

    location ~* \.(?:jpe?g|png|gif|png|ico|css|pdf|txt|js)$ {
        expires 1y;
        access_log off;
        log_not_found off;
        root /home/www/site.ru/www/;
    }

    #Routing 
 location @siteru{
        rewrite ^/id(\d+)/?$ /index.php?r=/user/view/id/$1 last;
        rewrite ^/logout/?$ /index.php?r=/login/logout last;
        rewrite ^/settings/?$ /index.php?r=/my/settings last;
        ......................
        rewrite ^(.*)$ /index.php?r=$uri&$args last;
    }

    # отключаем обработку запросов к несуществующим статичным файлам
    location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
        access_log        off;
        log_not_found     off;
        try_files $uri = 404;
    }

    location ~* \.(jpg|jpeg|png|ico|css|js|mp3|ogg|wav)$ {
        expires 180d;
        add_header Cache-Control public,max-age=259200;
    }

 location ~ \.php {
        client_max_body_size 8m;
        client_body_buffer_size 128k;
        fastcgi_split_path_info  ^(.+\.php)(.*)$;
        set $fsn /index.php;
        if (-f $document_root$fastcgi_script_name){
            set $fsn $fastcgi_script_name;
        }

        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fsn;
        #fastcgi_param REQUEST_URI      $request_url;
    }

}


Настройки для m.site.ru

server {
    listen 80;
    server_name m.site.ru;

    client_body_buffer_size 1K;
    client_header_buffer_size 2k;
    client_max_body_size 12m; 
    large_client_header_buffers 2 1k; 

    root /home/www/m.site.ru/www;

    location / {
        index index.php;
        try_files $uri $uri/ @siteru;
    }

    location ~* \.(?:jpe?g|png|gif|png|ico|css|pdf|txt|js)$ {
        expires 1y;
        access_log off;
        log_not_found off;
        root /home/www/m.site.ru/www/;
    }

    location @siteru{
    #Routing 
         ............
     }

  # отключаем обработку запросов к несуществующим статичным файлам
    location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
        access_log        off;
        log_not_found     off;
        try_files $uri = 404;
    }

    location ~* \.(jpg|jpeg|png|ico|css|js|mp3|ogg|wav)$ {
        expires 180d;
        add_header Cache-Control public,max-age=259200;
    }

    location ~ \.php {
        client_max_body_size 8m;
        client_body_buffer_size 128k;

        fastcgi_split_path_info  ^(.+\.php)(.*)$;

        set $fsn /index.php;
        if (-f $document_root$fastcgi_script_name){
            set $fsn $fastcgi_script_name;
        }

        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fsn;
    }
}
  • Вопрос задан
  • 1893 просмотра
Решения вопроса 1
sykobeats
@sykobeats Автор вопроса
Developer
Вопрос решился покупкой нового сертификата.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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