我正在尝试将所有没有服务器指令的托管域重定向到位于公司域服务器指令内的停放页面。
目前,我有以下内容,它只会重定向到主页,因为转发非 TLS 公司域请求也需要相同的指令。
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://company.com$request_uri;
}
我需要一个服务器指令,将所有非 company.com 的请求转发到 company.com/parked.php
答案1
您可以使用以下配置:
server {
listen 80;
listen [::]:80;
server_name company.com;
return 301 https://company.com$request_uri;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://company.com/parked.php;
}
因此,您可以为域指定一个处理 http -> https 重定向的 vhost ,以及一个重定向到停放页面的默认服务器。这比使用指令company.com
更有效率。if
答案2
你可能想要这样的东西:
if ( $host != 'company.com' ) {
return 301 https://company.com/parked.php
}
注意:如果在 nginx 中被视为邪恶(https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/),但这是少数几种安全的使用方法之一。