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;
    }
}
  • Вопрос задан
  • 1818 просмотров
Решения вопроса 1
sykobeats
@sykobeats Автор вопроса
Developer
Вопрос решился покупкой нового сертификата.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект