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

Управляйте файлом .conf, чтобы правильно переписать https

У меня есть сервер nginx и домен example.com. У каждого клиента есть собственный поддомен, например wsb.example.com и т. Д. Их содержимое изменяется через PHP, но все поддомены перенаправляются в одну и ту же папку на веб-сервере.

Единственная проблема, с которой я столкнулся, - это доступ к домену без https. https://whatever.example.com/ работает, но what.example.com перенаправляет меня на https: //*.example.com/

Что я делаю не так?

server {
        listen *:80;
        listen *:443 ssl;
        server_name *.alterament.de;

        index index.php;
        root /var/www/webapp.alterament.de/public;

        ssl_certificate         ssl/alterament.de.crt;
        ssl_certificate_key     ssl/alterament.de.key;

        if ($ssl_protocol = "") {
                rewrite ^/(.*) https://$server_name/$1 permanent;
        }

        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }

        location /resources {
                root /var/www/webapp.alterament.de;
        }
}

Ты использовал $server_name в вашем перенаправлении, что вызывает содержание server_name директива, которая будет использоваться. Это не то, что вам нужно.

Вместо, вы должны заменить его на $host.

Эта конфигурация проверяет, не является ли протокол https, и заставляет использовать https:

if ($ssl_protocol = "") {
       rewrite ^/(.*) https://$server_name/$1 permanent;
}

Попробуйте закомментировать весь блок и перезапустить nginx