Linux

Nginx 返回 301 重定向所有域

  • February 11, 2015

我的伺服器上有多個域正在執行 nginx 設置,如下所示:

server {
   listen 80;
   server_name domain1.com www.domain1.com;
   root /var/www/domain1/public_html;
   index index.php index.html index.html;
}

server {
   listen 80;
   server_name domain2.com www.domain2.com;
   return 301 https://plusgoogle.com/+somepage;
}

server {
   listen 80;
   root /var/www/other_domains/public_html;
   index index.php index.html index.html;
}

每個伺服器塊都在其單獨的文件中(domain1.conf、domain2.conf 等)

現在解決問題:

  • Domain1 正常工作
  • Domain2 - 不幸的是,現在無法測試,godaddy 有一些問題,但我很確定它會正常工作。
  • 其他域從 domain2 設置重定向到 301 url

我有點困惑,我可以理解 domain2 是否會載入其他域的根目錄,但是當我在配置中指定 server_name 和 301 時,其他域怎麼會重定向到 301?

感謝幫助

更新

  • 你確定你的瀏覽器沒有記憶體- 我試圖在不同的設備上打開網站,我認為核心
  • 這些域在現實中是否與您在上面的範例中一樣不同- 是的,實際上我不明白為什麼我不給出域名:domain1 = tomasdostal.com, domain2=autodopravadostal.cz, other domain= casull。 info, forgotmap.com 等
  • 第二個伺服器塊配置是否存在於其他任何地方或僅存在於此配置文件中- 我正在設置 100% 新的 aws 實例,所以我很確定它只存在於那裡。

您應該閱讀 nginx 如何處理請求

在您的情況下,具有未知域的請求會落入預設伺服器。通常是第一個,但可以是任何一個。要明確定義預設伺服器,您應該在指令中使用default_server標誌。listen因此,在您應該擷取所有其他域的伺服器塊中,您應該編寫:

listen 80 default_server;

引用自:https://serverfault.com/questions/666745