如何在 Nginx 中将 example.com/anycharacters 转发到具有 https 的同一域?

如何在 Nginx 中将 example.com/anycharacters 转发到具有 https 的同一域?

我希望无论访问者/用户在主域名后的 URL 栏中输入什么路径,该请求都应转发到特定域。例如,无论用户输入 example.com 还是 example.com/garbage/characters,他都应被转发到https://example.com/somepath

请告诉我如何在 Nginx 中实现这一点。我尝试提供 server_name example.com/*,但没有成功。

答案1

通常你不会向前请求(这意味着反向代理、proxy_pass指令和网站访问者继续向 Nginx 发出不安全的纯 http 请求),但指示网站访问者通过 https 发出新的、安全的请求,并使用重定向

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$servername$request_uri;
}

http://这将保留您的网站访问者在其 Web 浏览器中输入的完整 URI,并有效地指示他们仅用替换 来重复请求https://

要始终重定向到特定主机名,例如始终重定向到并从请求中example.com删除:将参数替换为主机名。wwwhttp://www.example.com/some/path$servernameexample.com

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}

类似地,您可以$request_uri用特定路径替换以始终重定向到一个特定的 URI。

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://example.com/some-new/landing/page.html;
}

相关内容