NGINX 重定向多個域
我對 NGINX 和整個配置都很陌生,所以在朋友的幫助下,我設法使用以下配置設置了一個伺服器:
server { listen 80; listen [::]:80; server_name domain.com; rewrite ^ https://$server_name$request_uri? permanent; } server { listen 80; listen [::]:80; server_name domain.de; rewrite ^ https://$server_name$request_uri? permanent; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name domain.com domain.de; root /var/www/html; index index.php index.html index.htm;
我的首頁、一些項目頁面和一些私人頁面有多個伺服器。我為每個 TLD 都有自己的伺服器,因為我不想在重定向時更改地址欄中的 TLD。現在我的答案是,我怎樣才能簡單地將所有這些非 SSL 伺服器獲取到一個大型伺服器(1/項目)而不重定向到一個 TLD?
例子:
Project.com、Project.de、Project.net 和 Project.org 正在將這些非 SSL 伺服器中的 5 台以上重定向到一台啟用 SSL 的伺服器。當我要去http://project.net>時,我會被重定向到<https://project.net。由於單一的非 SSL 伺服器設置,TLD 根本沒有改變。
我想要實現的是,我可以縮小我的配置文件,使每個項目有一個非 SSL 伺服器重定向到 https 而無需更改域。
:80 Server :443 Server
http domain.net —> https domain.net (
$$ non-SSL 01 $$—>$$ SSL 01 $$) http domain.com —> https domain.com ($$ non-SSL 02 $$—>$$ SSL 01 $$) http domain.de —> https domain.de ($$ non-SSL 03 $$—>$$ SSL 01 $$) http 項目.de —> https 項目.de (
$$ non-SSL 04 $$—>$$ SSL 02 $$) http project.com —> https project.com ($$ non-SSL 05 $$—>$$ SSL 02 $$) 等等
我的理解是您想將多個域重定向到一個域。
首先,我建議您使用
return 301
而不是rewrite
. 在這種情況下效率更高。這是預設的伺服器配置。如果請求與任何虛擬主機不匹配,它將被提供。
server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 301 https://your-correct-domain.com$request_uri; }
還要設置伺服器以接收 your-correct-domain.com 的 HTTP 流量並將其重定向到 HTTPS。
server { listen 80; listen [::]:80; server_name your-correct-domain.com; return 301 https://your-correct-domain.com$request_uri; }
最後,您擁有所有配置的 your-correct-domain.com 的 HTTPS 伺服器。
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name your-correct-domain.com; root /var/www/html; index index.php index.html index.htm; }
請注意,如果有人直接訪問 IP,此設置將為預設伺服器提供服務。例如,您的伺服器 IP 是
192.168.100.100
,如果有人在瀏覽器中輸入該 IP,他們將被重定向到https://your-correct-domain.com
.預設伺服器將擷取所有沒有為其準備伺服器/虛擬主機的請求。因此,如果有人請求*domain.de、my.domain.de、site2.domain-something.com,*他們都將被永久重定向到
https://your-correct-domain.com
. 您還可以選擇使用302而不是 301 進行重定向。最後要注意的是,如果您有其他虛擬主機不屬於您正在製作的此設置,則不會有問題。預設伺服器不會為此提供服務,因為 Nginx 將首先檢查虛擬主機是否存在並首先提供服務。