我正在从一个嵌入式 Linux 机器上提供网页,该机器可能连接到互联网,也可能没有连接到互联网。我的想法是,用户输入机器的 IP,然后页面就会出现。我想将所有非 SSL URL 重定向到 SSL URL(https)。我发现的每个示例都在return
nginx 配置行中使用 $server_name 或 $host。对我来说,问题是机器的 IP 可能会改变,每次都编辑 nginx 配置文件不是一个选择。我试过将 server_name 设置为,但_
无济于事。如果我设置server_name
为机器的当前 IP,那么会起作用。然后,如果我输入,192.168.1.196
它会重定向到https://192.168.1.196/dashboard
,这正是我想要的。不幸的是,这在生产中不起作用,因为如上所述,IP 可能会改变。我当前的 nginx 配置如下。
server {
listen 80;
#server_name _;
#server_name 192.168.1.196;
ssl_certificate server.crt;
ssl_certificate_key private.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
autoindex on;
return 302 https://$server_name/dashboard;
location /dashboard {
alias build;
index index.html;
}
}
答案1
那么这就是$host
您想要使用的,因为它包含浏览器提供的 Host: 标头。