69

サーバーでRailsアプリを起動して実行していますが、別のアプリを追加したいと思います。

Nginxにリクエストの目的を確認し、ドメイン名に基づいてトラフィックを分割してほしい

どちらのサイトにも、サイト対応にシンボリックリンクされた独自のnginx.confがありますが、nginxの起動中にエラーが発生しますStarting nginx: nginx: [emerg] duplicate listen options for 0.0.0.0:80 in /etc/nginx/sites-enabled/bubbles:6

彼らは両方とも80を聞いていますが、異なることを聞いています。

サイト#1

upstream blog_unicorn {
  server unix:/tmp/unicorn.blog.sock fail_timeout=0;
}

server {
  listen 80 default deferred;
  server_name walrus.com www.walrus.com;
  root /home/deployer/apps/blog/current/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @blog_unicorn;
  location @blog_unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://blog_unicorn;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

サイト2:

upstream bubbles_unicorn {
  server unix:/tmp/unicorn.bubbles.sock fail_timeout=0;
}

server {
  listen 80 default deferred;
  server_name bubbles.com www.bubbles.com;
  root /home/deployer/apps/bubbles/current/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @bubbles_unicorn;
  location @bubbles_unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://bubbles_unicorn;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}
4

3 に答える 3

113

ドキュメントには次のように書かれています。

default_serverパラメーターが存在する場合、サーバーは指定されたアドレスとポートのペアのデフォルトサーバーになります。

また、デフォルトのサーバーは1つしか存在できないことも明らかです。

そしてそれはまた言う:

listenディレクティブには、ソケット関連のシステムコールに固有のいくつかの追加パラメーターを含めることができます。これらは任意のlistenディレクティブで指定できますが、指定されたアドレス:ポートのペアに対して1回だけ指定できます。

したがって、ディレクティブの1つからdefaultとを削除する必要があります。そして、同じことがディレクティブにも当てはまります。deferredlisten 80ipv6only=on

于 2012-12-03T20:37:41.960 に答える
17

これと同じ問題がdefault_server発生しましたが、このメッセージの原因はディレクティブの重複だけではありませんでした。

backlogパラメータは、いずれかのserver_nameディレクティブでのみ使用できます。

サイト1:

server {
    listen 80 default_server backlog=2048;
    server_name www.example.com;
    location / {
        proxy_pass http://www_server;
    }

サイト2:

server {
    listen 80;    ## NOT NOT DUPLICATE THESE SETTINGS 'default_server backlog=2048;'
    server_name blogs.example.com;
    location / {
        proxy_pass http://blog_server;
    }
于 2016-06-02T10:22:13.697 に答える
0

私は同じ問題を抱えていました。/etc/nginx/sites-available/example2.comファイルを変更して修正しました。サーバーブロックをに変更しました

server {
        listen 443 ssl; # modified: was listen 80;
        listen [::]:443; #modified: was listen [::]:80;
        . . .
}

そして/etc/nginx/sites-available/example1.comでコメントアウトしましlisten 80listen [::]:80が、サーバーブロックはすでに443用に構成されていたためです。

于 2018-03-03T01:56:58.383 に答える