nginx – 获得parsing的server_name

我已经为我的网站创build了虚拟主机,然后我创build了一个名为server_name -> default_server的其他虚拟主机,以便在其他情况下显示特定的页面(例如,如果有人试图访问我的IP)。

我也使用phpmyadmin,roundcube和squirrelmail,我想redirect任何连接到他们从http到https。 这里是问题:

可以说我input:http: 44.44.44.44 (假设44.44.44.44是我的ip)

因为我已经设置了server_name -> default_server

 server { listen 80; server_name default_server; root /usr/share/nginx/www; index index.html index.htm; location /phpmyadmin { rewrite ^ https://$server_name$request_uri? permanent; } [...] } 

我redirect的url不是https://44.44.44.44/phpmyadminhttps://default_server/phpmyadmin哪个当然不存在。

所以我最终明确指出我的IP:

 location /phpmyadmin { rewrite ^ https://44.44.44.44$request_uri? permanent; } 

它的工作原理是这样的,但我想知道是否有办法使用返回parsing的server_name或任何其他/更聪明的方式的variables做同样的事情。

使用$http_host而不是$server_name

  rewrite ^ https://$http_host$request_uri? permanent;