Назад | Перейти на главную страницу

Перенаправление NGINX с CNAME

Я впервые использую NGINX, и у меня возникли проблемы.

Итак, у меня есть запись A, указывающая на test.example.com, и я создал CNAME toto.example.com с перенаправлением на test.example.com test.example.com работает нормально. Когда я получаю к нему доступ, меня перенаправляют на test.example.com/mysite (я сделал перенаправление на NGINX). Я также должен упомянуть, что мой NGINX перенаправляет каждый запрос в HTTPS (с сертификатом Let's Encrypt).

Я хочу, чтобы, когда я перехожу на toto.example.com, я хочу, чтобы он был перенаправлен на test.example.com/mysite, НО все еще в браузере отображается toto.example.com/mysite вместо test.example. com / mysite в качестве URL-адреса.

Как я могу это сделать? Найдите ниже мою конфигурацию NGINX (у меня только одна настройка сайта). Учтите, что каждый запрос нужно отправлять не по протоколу HTTP, а по протоколу HTTPS.

server {
    listen 80;
    server_name test.example.com;

    include snippets/letsencrypt.conf;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name test.example.com;
    root /var/www;

    ssl_certificate /path/to/my/certificate;
    ssl_certificate_key /path/to/my/key;
    ssl_trusted_certificate /path/to/my/certificate;

    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    location / {
       try_files $uri $uri/ /index.php;
       return 301 https://test.example.com/mysite;
    }

    location /sitetwo {
       index index.php;
       try_files $uri $uri/ /sitetwo/index.php;
    }

    location /sitethree{
       proxy_pass http://127.0.0.1:11334/;
       proxy_set_header Host $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /mysite {
       index index.php;
       try_files $uri $uri/ /mysite/index.php;

    }

    location ~ ^/mysite/(README|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
       deny all;
    }

    location ~ ^/mysite/(bin|SQL|config|temp|logs)/ {
       deny all;
    }

    location ~* \.php$ {
         fastcgi_split_path_info ^(.+?\.php)(/.*)$;
         if (!-f $document_root$fastcgi_script_name) {return 404;}
         fastcgi_pass  unix:/run/php/php7.3-fpm.sock;
         fastcgi_index index.php;
         include fastcgi_params;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Задача решена!! Я ставлю / в конце возвращаемого URL-адреса 301. Это не сработало. Я удалил /, и это сработало.

У меня было это:

return 301 https://toto.example.com/mysite/;

И я сделал это:

return 301 https://toto.example.com/mysite;

Теперь все работает отлично! Большое спасибо, Ричард!