我最近一直试图建立一个反向代理,将某些第四级子域转发到特定位置。所以,例如,这就是我想要完成的事情(在我的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。
谢谢!
答案 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
检查配置。