第四级子域转发

时间:2018-02-22 17:48:22

标签: nginx

我最近一直试图建立一个反向代理,将某些第四级子域转发到特定位置。所以,例如,这就是我想要完成的事情(在我的nginx文件中配置):

server {
    listen 80;
    server_name *.server.domain.com;
    rewrite ^ https://$server_name$request_uri;
}

此处的目标是,如果有人前往,例如http://item1.server.domain.com,则会将其重新路由到https://item1.server.domain.com。但是,使用此配置,URL将被重写为https://%2A.server.domain.com

有没有办法解决这个问题,以便将完整的域(item1)正确添加到重写的URL中?理想情况下,我希望它最终能够将server.domain.com上的任何子域直接重写为https。

谢谢!

1 个答案:

答案 0 :(得分:2)

$server_name变量包含server_name指令值的文本。 %2A是前导*的网址编码表示。

使用$host$http_host获取客户端实际请求的主机名。有关详情,请参阅this document

例如:

server {
    listen 80;
    server_name *.server.domain.com;
    return 301 https://$host$request_uri;
}

注意:在每次测试之间重新启动nginx清除浏览器缓存。使用nginx -T检查配置。