web-dev-qa-db-ja.com

[::]:80エラーのNginx重複リッスンオプション

コマンドを実行して構成をテストすると、[::]:80に複数の重複があることを示すエラーが表示されます。その前に、重複する複数のデフォルトサーバーに関する問題がありました。

複数のデフォルトサーバーで問題が発生した場合、ファイルは次のようになりました

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

root /usr/share/nginx/html;
index index.php index.html index.htm;

server_name munki;

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
    root /usr/share/nginx/html;
    }

location /report {
    try_files $uri $uri/ =404;
    }

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    }

location /munki_repo/ {
    alias /usr/local/munki_repo/;
    autoindex off;
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

この問題を解決するために、構成を次のように変更しました。

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

root /usr/share/nginx/html;
index index.php index.html index.htm;

server_name munki;

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
    root /usr/share/nginx/html;
    }

location /report {
    try_files $uri $uri/ =404;
    }

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    }

location /munki_repo/ {
    alias /usr/local/munki_repo/;
    autoindex off;
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

変更後、「[::]:80の重複オプション」エラーが発生し始めました。私はこれで何が間違っているのかわかりません。 Nginxを使用するのは今回が初めてです。問題が何であるか考えていますか?

12
ztmcoder

以前のコメントから回答を作成しています。

エラーメッセージ(nginx -t出力)有用な洞察が含まれている可能性があるため。

どのnginxバージョンを実行していますか?オプションipv6only=onはもう必要ない可能性があり、逆に問題を引き起こす可能性があります。私はこれを私のサーバーブロックに入れており、うまく実行されます:

listen 80;
listen [::]:80;

互いに競合する可能性がある、投稿していない他のサーバーブロックはありますか?


説明:現在の(1.13)nginxを読んでみましょう documentation

ipv6only=on|off
このパラメーター(0.7.42)は、(IPV6_V6ONLYソケットオプション)IPv6ソケットがワイルドカードアドレスをリッスンするかどうか[::]は、IPv6接続のみ、またはIPv6とIPv4の両方の接続を受け入れます。このパラメーターはデフォルトでオンになっています。起動時に一度だけ設定できます。

このパラメータはデフォルトでオンになっていますは、ipv6only=on。これは効果がなく、問題を引き起こす可能性があります(次のポイントを参照)。

1度しか設定できませんは、それが複数ある場合anywhere構成内(異なるサーバーブロック内など)では、エラーがスローされます:nginx: [emerg] duplicate listen options for [::]:80

25
simlev