Nginx 將所有子網域重新導向到非子網域 url

Nginx 將所有子網域重新導向到非子網域 url

我目前遇到以下問題,但天哪,我無法解決它。我在谷歌上找到的> 20個類似的線程沒有幫助。

首先,我建立了一個簡單的 HTTP 到 HTTPS 重定向,如下所示:

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

server {
    listen 443 ssl http2;
    server_name my-domain.com;
    ...
}

這工作得很好。如果我嘗試打開my-domain.com,我將被重定向到https://my-domain.com。但子域仍然存在問題。如果我打開www.my-domain.com或者test.my-domain.com,我希望這些子網域重定向到我的根HTTPS網域:https://my-domain.com。前面沒有任何子域。 HTTPS 子網域也應該會出現同樣的情況。我真的想禁止任何子網域(目前)。

我嘗試了很多配置,例如添加*.my-domain.com到 server_name ,但這仍然無法如預期運作。我還嘗試建立從 *.my-domain.com 到我的普通 HTTPS 網域的 HTTPS 重定向,但每個配置仍然有類似的結果:

  1. 所有 HTTP 請求都會產生包含子網域的 HTTPS url。
  2. 所有 HTTPS 請求都不會產生不帶子網域的 HTTPS url。

現在我的問題:如何將每個子網域(http 和 https)重新導向到其中不包含子網域的特定 https URL?每個組合都應始終導致:https://my-domain.com$request_uri

先致謝

更新:

沒有完全解決我的問題,但我有一些可以忍受的東西。我在網域配置中建立了從 www.my-domain.com 到 my-domain.com 的 CNAME。我還修改了 nginx 並新增了一個新的伺服器配置,該配置從 443 www.my-domain 重定向到 https:// my-domain。我還有一個普通的連接埠 80 伺服器,它也從 www.my-domain 重定向到 https:// my-domain。我修改了我的憑證並將 www.my-domain 新增到網域和子網域清單中。現在 www.my-domain(http 或 https)上的每個請求都將重定向到https://我的域名。我的網域(http 且沒有 www.)也將重定向到https://我的域名也。這對於我的需求來說似乎「沒問題」。

答案1

您可以使用一個default_server區塊來匹配另一個區塊中未明確定義的任何http網域。此部分僅適用於通配符憑證。httpsserverhttps

server {
    listen 80 default_server;
    listen 443 ssl default_server;
    ... ssl configuration
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    ...
}

這個文件了解詳情。

相關內容