私はNginxを使って複数の仮想ホスト(またはサーバーブロック(Nginx の命名法では) これらのホストはすべて同じドメインを共有し、それぞれに独自のサブドメインが割り当てられています。 1 つのサブドメインが無限のリダイレクト ループに入り、明らかに望ましくない動作になります。
注意: ドメイン名を編集して に置き換えました<mysite>
。
ルート ドメイン - は、www.<mysite>.com
期待どおりにリクエストを受信します。また、HTTP リクエストを HTTPS にリダイレクトします。これは で構成されます<mysite>-www
。
サブドメインassets.<mysite>.com
も期待どおりにリクエストを受信します。HTTP を HTTPS にリダイレクトするように設定されていないため、どちらのプロトコルも提供されます。問題はありません。 に設定されています<mysite>-holding
。
最後のサブドメインsoft.<mysite>.com
は と同じように設定されていますassets.<mysite>.com
が、失敗します。代わりに、ブラウザをリダイレクト ループに送信し、そのたびに を指しますhttps://soft.<mysite>.com
。これは、この 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
'assets' の部分が 'soft' になっている点を除いて、上記のものと同じです。それでも、無限のリダイレクト ループに入ります。
場所の指示を変えてみた。相談してみたドキュメント予想よりも良かったです。それでもループします。助けていただけるとありがたいです!
答え1
実際のところ、問題は次のとおりでした。
/sites-enabled
からへのシンボリックリンクが適切に作成されておらず/sites-available
、 の古い複製が使用されていたため<mysite>-www
、リダイレクト ループが発生していました。
私の質問では、上記のようにファイルを構成することが解決策でした。サイト対応の場所にコピーするか、適切にシンボリックリンクを作成すると、同様の問題を抱えている人の問題は解決します。
私の過ちです。