У меня есть сервер 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