NGINX 1.17 не перенаправляет запросы

Тема в разделе "Администрирование серверов", создана пользователем ApTypka, 13 ноя 2019.

Модераторы: mefish
  1. ApTypka

    ApTypka Постоялец Нарушитель

    Регистр.:
    13 сен 2007
    Сообщения:
    84
    Симпатии:
    1
    nginx.conf
    Код:
    user nginx;
    pid /var/run/nginx.pid;
    worker_processes auto;
    worker_rlimit_nofile 65535;
    
    events {
        multi_accept on;
        worker_connections 65535;
    }
    
    http {
        charset utf-8;
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        server_tokens off;
        types_hash_max_size 2048;
        client_max_body_size 16M;
    
        # MIME
        include mime.types;
        default_type application/octet-stream;
    
        # logging
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
       
        # SSL
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:10m;
        ssl_session_tickets off;
    
        # Diffie-Hellman parameter for DHE ciphersuites
        ssl_dhparam /etc/nginx/dhparam.pem;
    
        # Mozilla Intermediate configuration
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    
        # OCSP Stapling
        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 valid=60s;
        resolver_timeout 2s;
       
        # load configs
        include /etc/nginx/conf.d/*.conf;
       
    }
    
    vhost
    Код:
    server {
            listen 443 ssl http2;
            listen [::]:443 ssl http2;
            server_name testsite.ru;
           
            set $base /home/testsite;
            root $base/html;
           
            # SSL
            ssl_certificate /etc/letsencrypt/live/testsite.ru/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/testsite.ru/privkey.pem;
            ssl_trusted_certificate /etc/letsencrypt/live/testsite.ru/chain.pem;
       
            # security headers
            add_header X-Frame-Options "SAMEORIGIN" always;
            add_header X-XSS-Protection "1; mode=block" always;
            add_header X-Content-Type-Options "nosniff" always;
            add_header Referrer-Policy "no-referrer-when-downgrade" always;
            add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
            add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
           
            # . files
            location ~ /\.(?!well-known) {
                deny all;
            }
       
            # index.php
            index index.php index.html;
       
            # index.php fallback
            location / {
                try_files $uri $uri/ /index.php?$query_string;
            }
       
            # handle .php
            location ~ \.php$ {
                include extra/php_fastcgi.conf;
            }
       
            # favicon.ico
            location = /favicon.ico {
                log_not_found off;
                access_log off;
            }
           
            # robots.txt
            location = /robots.txt {
                log_not_found off;
                access_log off;
            }
           
            # assets, media
            location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
                expires 7d;
                access_log off;
            }
           
            # svg, fonts
            location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
                add_header Access-Control-Allow-Origin "*";
                expires 7d;
                access_log off;
            }
           
            # gzip
            gzip on;
            gzip_vary on;
            gzip_proxied any;
            gzip_comp_level 6;
            gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;
       
            # WordPress: allow TinyMCE
            location = /wp-includes/js/tinymce/wp-tinymce.php {
                include extra/php_fastcgi.conf;
            }
           
            # WordPress: deny wp-content, wp-includes php files
            location ~* ^/(?:wp-content|wp-includes)/.*\.php$ {
                deny all;
            }
           
            # WordPress: deny wp-content/uploads nasty stuff
            location ~* ^/wp-content/uploads/.*\.(?:s?html?|php|js|swf)$ {
                deny all;
            }
           
            # WordPress: deny wp-content/plugins (except earlier rules)
            location ~ ^/wp-content/plugins {
                deny all;
            }
           
            # WordPress: deny scripts and styles concat
            location ~* \/wp-admin\/load-(?:scripts|styles)\.php {
                deny all;
            }
           
            # WordPress: deny general stuff
            location ~* ^/(?:xmlrpc\.php|wp-links-opml\.php|wp-config\.php|wp-config-sample\.php|wp-comments-post\.php|readme\.html|license\.txt)$ {
                deny all;
            }
           
            #certbot
            location /.well-known {
            root /home/testsite/html;
            }
    }
    # subdomains redirect
    server {
            listen 443 ssl http2;
            listen [::]:443 ssl http2;
       
            server_name *.testsite.ru;
       
            # SSL
            ssl_certificate /etc/letsencrypt/live/testsite.ru/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/testsite.ru/privkey.pem;
            ssl_trusted_certificate /etc/letsencrypt/live/testsite.ru/chain.pem;
       
            return 301 https://testsite.ru$request_uri;
        }
       
    # HTTP redirect
    server {
            listen 80;
            listen [::]:80;
       
            server_name .testsite.ru;
       
            # ACME-challenge
            location ^~ /.well-known/acme-challenge/ {
                root /home/testsite/html;
            }
       
            location / {
                return 301 https://testsite.ru$request_uri;
            }
        }
        
    надо:
    основная и самая главная страница https://testsite.ru, все поддомены в том числе ввв должны перенаправляться на него. все запросы http с поддоменами и без тоже перенаправляться на https://testsite.ru. сертификат получен только на testsite.ru
    конфиги выше. где накосячил не пойму. редиректов нет.
    кто подскажет что сделать? версия nginx mainline 1.17
     
  2. metsys

    metsys

    Регистр.:
    27 апр 2014
    Сообщения:
    549
    Симпатии:
    562
    значит редиректов по https с субдоменов на главный домен не будет.
    вам нужно либо включая на все поддомены сертификат, либо wildcard сертификат.
     
    Sorcus нравится это.
  3. ApTypka

    ApTypka Постоялец Нарушитель

    Регистр.:
    13 сен 2007
    Сообщения:
    84
    Симпатии:
    1
    на других сайтах у меня аналогичные настройки но nginx 1.13 и wordpress стоит. все редиректы с несуществующих доменов есть но сертификат так же получен только на основной домен.
     
  4. Sorcus

    Sorcus Sorcus. A New Beginning.

    Moderator
    Регистр.:
    10 июл 2011
    Сообщения:
    472
    Симпатии:
    846
    laptop% curl --verbose http://www.losevoda.ru/
    * Trying 159.69.208.85:80...
    * TCP_NODELAY set
    * Connected to www.losevoda.ru (159.69.208.85) port 80 (#0)
    > GET / HTTP/1.1
    > Host: www.losevoda.ru
    > User-Agent: curl/7.66.0
    > Accept: */*
    >
    * Mark bundle as not supporting multiuse
    < HTTP/1.1 301 Moved Permanently
    < Server: nginx
    < Date: Wed, 13 Nov 2019 19:37:45 GMT
    < Content-Type: text/html; charset=UTF-8
    < Transfer-Encoding: chunked
    < Connection: keep-alive
    < Vary: Accept-Encoding, Cookie
    < X-Redirect-By: WordPress
    < Location: https://losevoda.ru/
    <
    * Connection #0 to host www.losevoda.ru left intact
    Это результат для http://www.losevoda.ru. Действительно есть редирект на https://losevoda.ru.
    Но подожди, я сейчас тебе кое-что покажу, ты только не пугайся.
    laptop% curl --verbose https://www.losevoda.ru/
    * Trying 159.69.208.85:443...
    * TCP_NODELAY set
    * Connected to www.losevoda.ru (159.69.208.85) port 443 (#0)
    * ALPN, offering h2
    * ALPN, offering http/1.1
    * successfully set certificate verify locations:
    * CAfile: /etc/ssl/certs/ca-certificates.crt
    CApath: none
    * TLSv1.3 (OUT), TLS handshake, Client hello (1)
    * TLSv1.3 (IN), TLS handshake, Server hello (2)
    * TLSv1.2 (IN), TLS handshake, Certificate (11)
    * TLSv1.2 (IN), TLS handshake, Server key exchange (12)
    * TLSv1.2 (IN), TLS handshake, Server finished (14)
    * TLSv1.2 (OUT), TLS handshake, Client key exchange (16)
    * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1)
    * TLSv1.2 (OUT), TLS handshake, Finished (20)
    * TLSv1.2 (IN), TLS handshake, Finished (20)
    * SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
    * ALPN, server accepted to use h2
    * Server certificate:
    * subject: CN=rhutor.ru
    * start date: Sep 24 00:14:55 2019 GMT
    * expire date: Dec 23 00:14:55 2019 GMT
    * subjectAltName does not match www.losevoda.ru
    * SSL: no alternative certificate subject name matches target host name 'www.losevoda.ru'
    * Closing connection 0
    * TLSv1.2 (OUT), TLS alert, close notify (256:(
    curl: (60) SSL: no alternative certificate subject name matches target host name 'www.losevoda.ru'
    More details here: https://curl.haxx.se/docs/sslcerts.html
    curl failed to verify the legitimacy of the server and therefore could not
    establish a secure connection to it. To learn more about this situation and
    how to fix it, please visit the web page mentioned above.
    Та-дам. Без сертификата хрен ты сможешь сделать редирект с https://www.losevoda.ru на https://losevoda.ru.
    Я тебе даже больше скажу, у тебя в subject вообще rhutor.ru фигурирует, а не losevoda.ru.
    Так что @metsys прав на счёт сертификатов. :dk:

    Касательно твоего конфига.
    Попробуй поменять
    Код:
    location / {
      return 301 https://testsite.ru$request_uri;
    }
    на
    Код:
    return 301 https://testsite.ru$request_uri;
    
     
    Последнее редактирование: 13 ноя 2019
    metsys нравится это.
  5. ApTypka

    ApTypka Постоялец Нарушитель

    Регистр.:
    13 сен 2007
    Сообщения:
    84
    Симпатии:
    1
    понятно все. фигня с location не работает. пробовал. кароче такая фигня у всех сайтов...