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

ApTypka

Постоялец
Регистрация
13 Сен 2007
Сообщения
97
Реакции
2
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;
        }
    }

надо:
основная и самая главная страница Для просмотра ссылки Войди или Зарегистрируйся, все поддомены в том числе ввв должны перенаправляться на него. все запросы http с поддоменами и без тоже перенаправляться на Для просмотра ссылки Войди или Зарегистрируйся. сертификат получен только на testsite.ru
конфиги выше. где накосячил не пойму. редиректов нет.
кто подскажет что сделать? версия nginx mainline 1.17
 
сертификат получен только на testsite.ru
значит редиректов по https с субдоменов на главный домен не будет.
вам нужно либо включая на все поддомены сертификат, либо wildcard сертификат.
 
на других сайтах у меня аналогичные настройки но nginx 1.13 и wordpress стоит. все редиректы с несуществующих доменов есть но сертификат так же получен только на основной домен.
 
Для просмотра ссылки Войди или Зарегистрируйся
все по аналогии и все работает
laptop% curl --verbose Для просмотра ссылки Войди или Зарегистрируйся
* Trying 159.69.208.85:80...
* TCP_NODELAY set
* Connected to Для просмотра ссылки Войди или Зарегистрируйся (159.69.208.85) port 80 (#0)
> GET / HTTP/1.1
> Host: Для просмотра ссылки Войди или Зарегистрируйся
> 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: Для просмотра ссылки Войди или Зарегистрируйся
<
* Connection #0 to host Для просмотра ссылки Войди или Зарегистрируйся left intact
Это результат для http://Для просмотра ссылки Войди или Зарегистрируйся. Действительно есть редирект на Для просмотра ссылки Войди или Зарегистрируйся.
Но подожди, я сейчас тебе кое-что покажу, ты только не пугайся.
laptop% curl --verbose Для просмотра ссылки Войди или Зарегистрируйся
* Trying 159.69.208.85:443...
* TCP_NODELAY set
* Connected to Для просмотра ссылки Войди или Зарегистрируйся (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 Для просмотра ссылки Войди или Зарегистрируйся
* SSL: no alternative certificate subject name matches target host name 'Для просмотра ссылки Войди или Зарегистрируйся'
* Closing connection 0
* TLSv1.2 (OUT), TLS alert, close notify (256:(
curl: (60) SSL: no alternative certificate subject name matches target host name 'Для просмотра ссылки Войди или Зарегистрируйся'
More details here: Для просмотра ссылки Войди или Зарегистрируйся
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://Для просмотра ссылки Войди или Зарегистрируйся на Для просмотра ссылки Войди или Зарегистрируйся.
Я тебе даже больше скажу, у тебя в subject вообще rhutor.ru фигурирует, а не losevoda.ru.
Так что @metsys прав на счёт сертификатов. :dk:

Касательно твоего конфига.
Попробуй поменять
Код:
location / {
  return 301 https://testsite.ru$request_uri;
}
на
Код:
return 301 https://testsite.ru$request_uri;
 
Последнее редактирование:
понятно все. фигня с location не работает. пробовал. кароче такая фигня у всех сайтов...
 
Назад
Сверху