Nginx

Nginx 在使用多個伺服器塊時將瀏覽器置於重定向循環中

  • August 3, 2021

我正在使用 Nginx 來託管許多虛擬主機(或Nginx 命名法中的伺服器塊)。這些主機都共享同一個域,每個都分配了自己的子域。一個子域進入一個無限的重定向循環,顯然是不受歡迎的行為。

注意:我已經編輯了我的域名並將其替換為<mysite>.

根域 -www.<mysite>.com按預期接收請求。它還將 HTTP 請求重定向到 HTTPS。它配置在<mysite>-www.

子域assets.<mysite>.com也按預期接收請求。它未配置為將 HTTP 重定向到 HTTPS,提供任一協議。沒有麻煩。它配置在<mysite>-holding.

最終的子域soft.<mysite>.com配置相同,assets.<mysite>.com但它步履蹣跚。相反,它會在重定向循環中發送瀏覽器,每次都指向https://soft.<mysite>.comThis is 儘管此 vhost 的配置文件中沒有此類設置。它配置在<mysite>-soft.

配置為<mysite>-www

server {
   server_name www.<mysite>.com;

   listen 80 default_server ;
   listen [::]:80 default_server;

   location / {
       return 301 https://$server_name$request_uri;
   }

   root /var/www/html;
}

server {
   listen              443 ssl default_server;
   ssl_certificate /etc/letsencrypt/live/www.<mysite>.com/fullchain.pem; 
   ssl_certificate_key /etc/letsencrypt/live/www.<mysite>.com/privkey.pem;
   include /etc/letsencrypt/options-ssl-nginx.conf;

   root /var/www/html;
   server_name www.<mysite>.com;
   error_page 404 /404.html;

   location / {
       limit_req zone=mylimit burst=20 nodelay;
       try_files $uri $uri/ =404;
       index index.html index.htm;
   }
}

配置為<mysite>-holding

server {
   listen 80;
   listen [::]:80;
   listen 443 ssl;

   server_name assets.<mysite>.com;

   ssl_certificate /etc/letsencrypt/live/assets.<mysite>.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/assets.<mysite>.com/privkey.pem; 
   include /etc/letsencrypt/options-ssl-nginx.conf;

   root /var/www/holding/html;

   location / {
       limit_req zone=mylimit burst=20 nodelay;
       try_files $uri $uri/ =404;
       index index.html;
   }

的配置文件soft.<mysite>.com與上面的相同,除了它說“資產”它說“軟”。然而它進入了這個無限的重定向循環。

我試過改變位置指令。我查閱了比預期更好的文件。儘管如此,它還是會循環。幫助將不勝感激!

碰巧的是,問題如下:

我沒有正確地從/sites-enabledto符號連結/sites-available,它使用了一個舊的副本,<mysite>-www它導致了重定向循環。

在我的問題中如上所述配置文件是解決方案。將其複製到啟用站點或正確符號連結將解決處於類似困境中的任何人的問題。

MEA 過失。

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