質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • nginx

    837questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • Server

    111questions

【nginx】 [emerg] duplicate upstreamのエラーが出る。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 352

mulberryfields

score 752

UbuntuServer上で、nginx、gunicornを使って、Djangoのアプリを動かそうとしています。 

nginxの設定ファイルをチェックするために、
sudo nginx -t
を実行すると、

nginx: [emerg] duplicate upstream "test1" in /etc/nginx/sites-enabled/default:18
nginx: configuration file /etc/nginx/nginx.conf test failed

というエラーが出ます。

/etc/nginx/sites-enabled/default
の内容は、下記の通りです。
「upstream testa」は重複していないと思うのですが、なぜ、このようなエラーが出るのか分かりません。

upstream testa{
    server 127.0.0.1:3000;
}


server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        access_log /var/log/nginx/localhost.access_log;

        root /var/www/html;

        server_name www.testafields.com;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                proxy_set_header Host $host;
                proxy_pass http://testafields;
        }


upstream testb{
    server 127.0.0.1:8001;
}

server {
    listen 80;
    access_log /var/log/nginx/testb.access_log;
    root /var/www/html;
    server_name testb.jp;

    location / {
        proxy_set_header Host $host;
        proxy_pass http://testb;
    }
}


upstream testc{
    server 127.0.0.1:2000;
}

server {
    listen 80;
    access_log /var/log/nginx/testc.access_log;
    root /var/www/html;
    server_name test-c.jp;

    location /{
        proxy_set_header Host $host;
        proxy_pass http://testc;
    }
}

ちなみに、それまではnginxが動いていたのですが、

[emerg] 1645#1645: directive "server_name" is not terminated by ";" in /etc/nginx/sites-enabled/default:53

というエラーが出たため、
server_name www.testafields.com
の後の、「;」を付けました。
この後から「 [emerg] duplicate upstream」のエラーが出始めたので、上記の「;」を付けたのが問題なのかとも思いましたが、「;」を外しても影響なかったので、関係ないのではないかと思います。

もし、お気づきの点がある方が見えましたら、ご教示頂けないでしょうか。
宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • TaichiYanagiya

    2018/04/25 23:46

    /etc/nginx/sites-enabled/ 以下の default よりも先に読み込まれるファイルで、同じ upstream が存在しませんでしょうか?

    キャンセル

  • mulberryfields

    2018/04/26 08:35 編集

    ありがとうございます。ご指摘事項を確認して、修正した所、うまく起動しました。内容については、回答に記載しました。

    キャンセル

回答 1

check解決した方法

+1

default以外にnginxに読み込まれているファイルが無いかとご指摘を頂いたので、確認しました。

/etc/nginx/nginx.conf
には、下記の記述があります。

##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

そのため、読み込まれているのは、sites-enabledの中にあるファイルだと思います。
ls sites-enabled
をしてみたら、下記の2つのファイルが入っていました。

1
default

1というファイルが、いつ、なぜできたのか分からないのですが、中身はdefaultと同じものだったので、削除しました。
これにより、
nginx -t
configuration file /etc/nginx/nginx.conf test is successful
になり、
nginxは、無事起動しました。
ありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • nginx

    837questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • Server

    111questions