我有一个 nginx 服务器和一个域名 example.com。每个客户都有自己的子域名,如 wsb.example.com 等。它们的内容通过 PHP 更改,但所有子域名都会重定向到 Web 服务器上的同一文件夹。
我遇到的唯一问题是无需 https 即可访问域名。https://whatever.example.com/有效,但 whatever.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;
}
}
答案1
您$server_name
在重定向中使用了 ,这会导致server_name
指令的内容被使用。这不是您想要的。
反而,你应该用它代替$host
。
答案2
此配置检查协议是否不是 https 并强制使用 https:
if ($ssl_protocol = "") {
rewrite ^/(.*) https://$server_name/$1 permanent;
}
尝试注释掉整个块并重新启动 nginx