web-dev-qa-db-ja.com

Nginx return301はすべてのドメインをリダイレクトします

次のように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、その他のドメイン= casull.info、forgotmap.comなど。

  • 2番目のサーバーブロック構成は他の場所に存在しますか、それともこの構成ファイルにのみ存在しますか-100%新しいawsインスタンスをセットアップしているので、その唯一のそこ。

2
Tomas

Nginx リクエストを処理する の方法を読む必要があります。

あなたの場合、ドメインが不明なリクエストはdefaultサーバーに分類されます。通常は最初のものですが、どれでもかまいません。デフォルトサーバーを明確に定義するには、listenディレクティブでdefault_serverフラグを使用する必要があります。したがって、他のすべてのドメインをキャッチする必要があるサーバーブロックに、次のように記述します。

listen 80 default_server;
6
Alexey Ten