Http

將 http 重定向到 https 但排除一些

  • August 21, 2017

我正在使用 nginx,我想知道是否可以這樣做。

現在要管理我的虛擬主機,我在 /etc/nginx/sites-available 中分別創建它們(之後啟動它們)

mydomain.com
subdomain.mydomain.com
subdomain1.mydomain.com
anotherdomain.com

因此,要將 http 重定向到 https,我創建了一個重定向 vhost,其中包含:

server {
       listen 80 default_server;
       listen [::]:80 default_server;
       server_name _;
       return 301 https://$host$request_uri;
}

mydomain.com 和所有其他子域都在 https 下。

但問題是anotherdomain.com,我不想將其重定向到https。在這裡我不知道該怎麼做。我有一個主意 :

僅在包含所有配置的 vhost 上創建,然後執行以下操作:

# Config of anotherdomain.com

# Redirect all domain/subdomain after this part to https
server {
       listen 80 default_server;
       listen [::]:80 default_server;
       server_name _;
       return 301 https://$host$request_uri;
}

# Config of mydomain.com
# Config of subdomain.com
# Config of subdomain1.com

這將作為一種覆蓋工作,就像在 CSS 中一樣?

感謝您的回饋意見。

通常,每個域/子域都有一個轉發塊。我以前從未見過使用 default_server 進行重定向,但在大多數情況下它可能沒問題。

因此,您無需使用預設伺服器,而是為相關域或每個域定義一個塊,如下所示

server {
 listen 80;
 server_name anotherdomain.com;

 location / {
   // whatever
 }
}

這將覆蓋 default_server 塊。我個人會按域為每個網站定義轉發塊,只是因為它看起來更整潔。

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

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