Tùy chọn nghe trùng lặp Nginx cho [::]: 80 lỗi


12

Khi tôi chạy lệnh để kiểm tra cấu hình của mình, tôi gặp lỗi cho biết có nhiều bản sao cho [::]:80. Trước đó tôi đã gặp sự cố với nhiều máy chủ mặc định.

Khi tôi gặp sự cố với nhiều máy chủ mặc định, tệp của tôi trông như thế này

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;
    }
}

Để giải quyết vấn đề đó, tôi đã thay đổi cấu hình thành:

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;
    }
}

Sau khi thay đổi, tôi bắt đầu nhận được một "tùy chọn trùng lặp cho lỗi [::]: 80". Tôi không chắc chắn những gì tôi đang làm sai với điều này. Đây là lần đầu tiên tôi làm việc với Nginx. Bất kỳ ý tưởng những gì vấn đề có thể được?


Vui lòng gửi thông báo lỗi ( nginx -tđầu ra). Phiên bản nginx nào bạn đang chạy? ipv6only=oncó thể không cần thiết nữa. Tôi có cái này trong khối máy chủ của mình: listen 80;listen [::]:80;và nó chạy tốt. Bạn có khối máy chủ nào khác không?
simlev

Điều đó đã làm việc những gì bạn đề nghị Cảm ơn! Không bao giờ có thể nghĩ về điều đó.
ztmcoder

Câu trả lời:


27

Tôi đang tạo ra một câu trả lời từ nhận xét trước đó của tôi.

Vui lòng gửi thông báo lỗi ( nginx -tđầu ra) vì nó có thể chứa một số thông tin chi tiết hữu ích.

Phiên bản nginx nào bạn đang chạy? Tùy chọn ipv6only=oncó thể không cần thiết nữa và trái lại có khả năng tạo ra vấn đề. Tôi có cái này trong khối máy chủ của mình và nó chạy tốt:

listen 80;
listen [::]:80;

Bạn có bất kỳ khối máy chủ nào khác mà bạn không đăng có thể xung đột với nhau không?


Giải thích: chúng ta hãy đọc tài liệu nginx (1.13) hiện tại :

ipv6only=on|off
tham số này (0.7.42) xác định (thông qua IPV6_V6ONLYtùy chọn ổ cắm) liệu ổ cắm IPv6 nghe trên địa chỉ ký tự đại diện [::] sẽ chỉ chấp nhận kết nối IPv6 hoặc cả kết nối IPv6 và IPv4. Tham số này được bật theo mặc định. Nó chỉ có thể được thiết lập một lần khi bắt đầu.

Tham số này được bật theo mặc định có nghĩa là bạn không nên sử dụngipv6only=on. Nó không làm gì tốt và có khả năng tạo ra vấn đề (xem điểm tiếp theo).

Nó chỉ có thể được đặt một lần có nghĩa là nếu bạn có nhiều hơn một lầnở bất kỳ đâu trong cấu hình của bạn (chẳng hạn như trong các khối máy chủ khác nhau), nó sẽ gây ra lỗi :nginx: [emerg] duplicate listen options for [::]:80.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.