我已经为我的网站创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/phpmyadmin但https://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;