nginx - nginx: [nổi] bind () thành [::]: 80 không thành công (98: Địa chỉ đã được sử dụng)


248

Thật bất ngờ tôi nhận được lỗi nginx dưới đây

 * Restarting nginx
 * Stopping nginx nginx
   ...done.
 * Starting nginx nginx
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
   ...done.
   ...done.

Nếu tôi chạy

lsof -i :80 or sudo fuser -k 80/tcp 

Tôi không có gì cả. Không có gì trên cổng 80

Sau đó, tôi chạy dưới đây:

sudo netstat -pan | grep ":80"
tcp        0      0 127.0.0.1:8070          0.0.0.0:*               LISTEN      15056/uwsgi     
tcp        0      0 10.170.35.97:39567      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39564      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39584      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39566      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39571      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39580      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39562      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39582      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39586      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39575      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39579      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39560      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39587      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39591      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39589      10.158.58.13:8080       TIME_WAIT   - 

Tôi bối rối. Làm thế nào để tôi gỡ lỗi này?

Tôi đang sử dụng uwsgi với một proxy qua cổng 8070. uwsgi đang chạy. Nginx thì không. Tôi đang sử dụng Ubuntu 12.4

Dưới đây là các phần có liên quan của tệp nginx conf của tôi

upstream uwsgi_frontend {
          server 127.0.0.1:8070;
        }
server {
listen 80;
        server_name 127.0.0.1;
        location = /favicon.ico {
                  log_not_found off;
                }



                location / {
                       include uwsgi_params;
                       uwsgi_buffering off;

                       uwsgi_pass 127.0.0.1:8070;
                 }
        }

Đây là cách tôi cài đặt nginx trên Ubuntu 12.04

nginx=stable;add-apt-repository ppa:nginx/$nginx;
apt-get update
apt get install nginx-full

19
Tôi tìm thấy vấn đề mà tôi chưa bao giờ có trước đây. Tôi đã phải xóa / etc / nginx / site-Available / default. Sau đó, nó làm việc. Conf của tôi đã ở / etc / nginx / default
Tampa

Tôi đang chạy Nginx + Varnish và gặp lỗi này. Giải pháp là dừng cả hai, sau đó bắt đầu nginx trước và sau đó véc ni.
Ben

bạn có thể thử dừng dịch vụ được đặt tên.
Amal

bạn đã xóa mặc định của bạn khỏi kích hoạt trang web?
Wolfpack'08

tôi đã thử tất cả các giải pháp ở đây. Đã kiểm tra tất cả các cổng đang sử dụng (nó đang được sử dụng bởi chính NGINX) vì vậy tôi đã giết cổng và khởi động lại nó. Làm việc như người ở.
gavin

Câu trả lời:


202

[::]:80 là một địa chỉ ipv6.

Lỗi này có thể được gây ra nếu bạn có cấu hình nginx đang nghe trên cổng 80 và cả trên cổng [::]:80.

Tôi đã có những điều sau đây trong tập tin trang web mặc định của mình:

listen 80;
listen [::]:80 default_server;

Bạn có thể khắc phục điều này bằng cách thêm ipv6only=onvào [::]:80như thế này:

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

Để biết thêm thông tin, xem:

http://forum.linode.com/viewtopic.php?t=8580

http://wiki.nginx.org/HttpCoreModule#listen


11
Bạn cũng có thể sửa nó bằng cách xóa phần nghe 80; bởi vì hãy lắng nghe [::]: 80 người nghe cả IPv4 và IPv6. Mặc dù vậy, hãy coi chừng vì một số hệ thống (như FreeBSD) tách rời các ổ cắm IPv4 và IPv6 và sau đó nó sẽ không hoạt động, nhưng đối với Linux thì mọi việc sẽ ổn. wiki.nginx.org/HttpCoreModule#listen
gitaarik

4
Cảm ơn bạn đã đào sâu vào vấn đề này và đưa ra lời giải thích tại sao việc xóa /etc/nginx/sites-available/defaultgiúp khắc phục lỗi trên.
Oliver

1
Ngay cả khi tôi nhận xét dòng ipv6, tôi vẫn gặp lỗi tương tự khi tôi thử sudo service nginx restart. Khi tôi làm netstat -tulpn |grep 80, tôi chỉ nhận được một lần quá trình nginx (0.0.0.0:80). Bất cứ ý tưởng tại sao nó sẽ không khởi động lại?
La Mã

Tôi thứ hai những gì @rednaw đã nói, nhưng thay vì loại bỏ phần nghe, bạn chỉ cần bình luận ra
d4nyll

Cài đặt đã ipv6only=onkhắc phục sự cố, nhưng nginx thực sự sẽ phát hiện ra rằng nó đang cố liên kết với cùng một giao diện: cổng hai lần.
Dan Dascalescu

245

tôi đã sửa lỗi này bằng cách chạy sudo apachectl stop- hóa ra apache đang chạy ở chế độ nền và ngăn nginx bắt đầu trên cổng mong muốn.

Trên Ubuntu chạy sudo /etc/init.d/apache2 stop


8
Sử dụng sudo /etc/init.d/apache2 stopđể dừng apache trên Ubuntu 14.04
Footniko

3
Lý do là vì bạn không thể có hai máy chủ web nghe cùng một cổng. Chọn một, và nếu cần, proxy. Ví dụ: sử dụng nginx, nhưng đối với các yêu cầu nhất định (chẳng hạn như đối với phptệp), proxy đến cổng Apache.
d4nyll

Tương tự ở đây trên một cài đặt debian 9 mới.
jirarium

Cảm ơn. Nhưng bất cứ ý tưởng tại sao nó đột nhiên bắt đầu? Tôi đã không chạm vào máy chủ trong một tuần, nhưng nó đã bắt đầu đêm qua.
Ajay Singh

1
Cảm ơn giải pháp của bạn. Nó hoạt động với tôi, tôi sử dụng Google Cloud Platform
congle

92

Trường hợp của tôi thì khác, tôi đã phải giết Nginx để khởi động lại nó.

Thay vì

sudo systemctl restart nginx

Tôi đã phải sử dụng:

sudo pkill -f nginx & wait $!
sudo systemctl start nginx

1
Tôi đã sử dụng 404 Không tìm thấy và tôi đã sử dụng đề xuất của bạn, bây giờ tôi đã khắc phục vấn đề của mình. Cảm ơn.
Bay

3
Điều này làm việc cho tôi. Không có gì khác làm. Không chắc chắn quá trình bắt đầu khi hệ thống khởi động lại, nhưng tôi sẽ chỉ thêm điều này vào thói quen nginx khởi động lại. Cảm ơn!
Khom Nazid

38

Tôi tìm thấy vấn đề mà tôi chưa bao giờ có trước đây.

Tôi chỉ phải xóa /etc/nginx/sites-available/default. Sau đó, nó làm việc.

Conf của tôi là trong /etc/nginx/default.


2
+1 Giải pháp này hiệu quả với tôi, nhưng sau đó tôi nghĩ rằng phải có một cái gì đó mặc định thực sự gây ra sự cố, vì vậy tôi đã đào sâu hơn một chút và cung cấp câu trả lời với nhiều thông tin hơn.
Nathan

11
Tôi sẽ lập luận rằng việc xóa mẫu cấu hình trang mặc định không phải là giải pháp tốt nhất - nhận xét dòng có listen 80;trong cùng mẫu đó đã giải quyết vấn đề và chính xác như vậy. Thủ thuật của bạn hoạt động nhưng đó không phải là điều mà những người đọc tương lai của câu hỏi của bạn sẽ làm. Đó là lý do tại sao tôi khuyên bạn nên chọn câu trả lời của @ Nathan là câu trả lời đúng.
Oliver

4
Tôi gặp vấn đề tương tự sau khi chạy apt-get dist-upgrade, đã nâng cấp gói nginx, tạo ra một liên kết /etc/nginx/sites-enabledđến /etc/nginx/sites-available/default. nginx đã cố tải cấu hình mặc định này, nó nghe cổng 80 qua IPv6, sau đó nó cũng đang tải cấu hình thực của tôi. Loại bỏ symlink đó đã khắc phục vấn đề.
Dan Dascalescu

15
BẠN KHÔNG CẦN XÓA /etc/nginx/sites-available/default , chỉ cần xóa liên kết tượng trưng đến nó -sudo rm /etc/nginx/sites-enabled/default
d4nyll

Tôi gặp vấn đề này khi thử chạy nginxtrên cổng 8080 và varnishtrên cổng 80 và tương tự như câu trả lời này, tôi thấy vấn đề với một nginxcấu hình mặc định vẫn nghe trên cổng 80 mặc dù sites-availabletất cả các cấu hình của tôi đều nghe trên cổng 8080. Điều này nằm ở/etc/nginx/conf.d/default
zigojacko

24

Tôi cũng đã nhận được cùng một lỗi.

nginx: [nổi lên] liên kết () với [::]: 80 không thành công (98: Địa chỉ đã được sử dụng)

và khi tôi gõ localhost trong trình duyệt, thì tôi đã nhận được

Nó hoạt động!

Đây là trang web mặc định cho máy chủ này.

Phần mềm máy chủ web đang chạy nhưng chưa có nội dung nào được thêm vào. thay vì trang chào mừng nginx, apache2 đang chạy trên cùng một cổng,

  1. tìm tập tin apache2 port.conf

    sudo /etc/apache2/ports.conf
    
  2. Thay đổi cổng khác sau đó 80, tôi làm như là70

  3. lưu các tập tin

  4. khởi động lại hệ thống của bạn

nó cũng sẽ hoạt động với bạn, nếu bạn gõ localhost trong trình duyệt, bạn sẽ nhận được trang chào mừng nginx


1
Bạn có thể đơn giản là không muốn chạy cả Apache2 và nginx cùng một lúc. Tôi tìm thấy cài đặt Apache bắt đầu dịch vụ. Vì vậy, tôi đã ban hành "sudo /etc/init.d/apache2 stop", và sau đó có thể bắt đầu nginx bình thường. Điều này cũng giúp bạn tiết kiệm từ việc khởi động lại hệ thống của bạn.
Chris Westin

1
Bạn có quyền xóa liên kết sym / etc / nginx / sites-enable / default sẽ ngăn không cho nó nghe trên hai cổng. Tôi thấy thực sự hơi khó chịu khi mọi hướng dẫn trên nginx bắt đầu bằng cách đề nghị mọi người xóa liên kết "mặc định" nhưng đó là một chủ đề khác mà tôi cho là.
eschipul

@IgorGanapolsky chuyển Apache sang một cổng khác?
Menasheh

10

cố gắng thực hiện lệnh này

sudo fuser -k 443/tcp
service nginx restart

8

Vấn đề của tôi là tôi đã chồng chéo chỉ thị nghe. Tôi đã quản lý để tìm ra các chỉ thị chồng chéo bằng cách chạy

grep -r listen /etc/nginx/*

Hai tệp được nghe tại cùng một cổng:

/etc/nginx/conf.d/default.conf:           listen 80;  
/etc/nginx/sites-enabled/default.conf:    listen 80;

3
Đó là một cách rất gọn gàng để kiểm tra mọi thứ: grep -r listen /etc/nginx/*cảm ơn vì đã chia sẻ!
Newskooler

6

Tôi đã có cùng một vấn đề trong letencrypt (certbot) và nginx,

tham chiếu: https://github.com/certbot/certbot/issues/5486

lỗi này chưa có giải pháp

vì vậy, một cron đã thay đổi để gia hạn (đặt tải lại sau khi gia hạn) (sử dụng đề xuất từ ​​certbot)

-- in /etc/cron.d/certbot
from
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew 
to
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --pre-hook "service nginx stop" --post-hook "service nginx start"

nhật ký (ngắn):

-- in /var/log/syslog
Jun 10 00:14:25 localhost systemd[1]: Starting Certbot...
Jun 10 00:14:38 localhost certbot[22222]: nginx: [error] open() "/run/nginx.pid$
Jun 10 00:14:41 localhost certbot[22222]: Hook command "nginx" returned error c$
Jun 10 00:14:41 localhost certbot[22222]: Error output from nginx:
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:443 $
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:80 f$
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:443 $
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:80 f$
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:443 $
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:80 f$
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:443 $
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:80 f$
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:443 $
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:80 f$
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] still could not bind()
Jun 10 00:14:41 localhost systemd[1]: Started Certbot.


-- in /var/log/nginx/error.log
2018/06/10 00:14:27 [notice] 22233#22233: signal process started
2018/06/10 00:14:31 [notice] 22237#22237: signal process started
2018/06/10 00:14:33 [notice] 22240#22240: signal process started
2018/06/10 00:14:34 [notice] 22245#22245: signal process started
2018/06/10 00:14:38 [notice] 22255#22255: signal process started
2018/06/10 00:14:38 [error] 22255#22255: open() "/run/nginx.pid" failed (2: No $
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:443 failed (98: Addr$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:80 failed (98: Addre$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:443 failed (98: Addr$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:80 failed (98: Addre$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:443 failed (98: Addr$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:80 failed (98: Addre$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:443 failed (98: Addr$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:80 failed (98: Addre$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:443 failed (98: Addr$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:80 failed (98: Addre$
2018/06/10 00:14:39 [emerg] 22261#22261: still could not bind()

1
siêu ngẫu nhiên, nhưng đây là vấn đề của tôi. cảm ơn vì đã đăng bài này Lỗi của tôi dường như xuất hiện do mục nhập tên miền lỗi thời, nó đã cố gắng gia hạn nhưng không thể vì tôi không kiểm soát tên miền nữa.
w--

Tôi đoán đây có lẽ là vấn đề của tôi. nhưng tôi cần chờ để có một cái nhìn
Oscar Zhou1989

2

Lần đầu tiên thay đổi apache nghe cổng 80 đến 8080 apache trong /etc/apache2/ports.conf bao gồm

Listen 1.2.3.4:80 to 1.2.3.4:8080
sudo service apache2 restart 

hoặc là

sudo service httpd restart    // in case of centos

sau đó thêm nginx làm máy chủ proxy ngược sẽ nghe cổng apache

server {
 listen   1.2.3.4:80;
 server_name  some.com;

 access_log  /var/log/nginx/something-access.log;

 location / {
  proxy_pass http://localhost:8080;
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }


location ~* ^.+\.(jpg|js|jpeg|png)$ {
   root /usr/share/nginx/html/;
}

location /404.html {
  root /usr/share/nginx/html/40x.html;
}

error_page 404 /404.html;
    location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
    location = /50x.html {
}

# put code for static content like js/css/images/fonts
}

Sau khi thay đổi khởi động lại máy chủ nginx

sudo service nginx restart

Bây giờ tất cả lưu lượng sẽ được xử lý bởi máy chủ nginx và gửi tất cả yêu cầu động đến apache và conten tĩnh được phục vụ bởi máy chủ nginx.

Đối với cấu hình nâng cao như bộ đệm:

https://www.linode.com/docs/web-servers/nginx/slightly-more-advified-configurations-for-nginx/#basic-nginx-caching


1

Tôi đã gặp vấn đề tương tự. nhật ký như dưới đây

2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to [::]:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to [::]:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to [::]:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to [::]:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to [::]:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: still could not bind()
2018/10/31 12:54:23 [alert] 127997#127997: unlink() "/run/nginx.pid" failed (2: No such file or directory)
2018/10/31 22:40:48 [info] 36948#36948: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf:68
2018/10/31 22:50:40 [emerg] 37638#37638: duplicate listen options for [::]:80 in /etc/nginx/sites-enabled/default:18
2018/10/31 22:51:33 [info] 37787#37787: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf:68

Điều cuối cùng [emerg]cho thấy điều duplicate listen options for [::]:80đó có nghĩa là có nhiều hơn một tệp khối nginx chứa [::]:80.

Giải pháp của tôi là xóa một trong các [::]:80cài đặt

PS bạn có thể có tập tin khối mặc định. Lời khuyên của tôi là giữ tệp này làm máy chủ mặc định cho cổng 80. và xóa [::]:80khỏi các tệp chặn khác


1

Tôi sử dụng người giám sát để điều hành Nginx và Gunicorn cạnh nhau trên một container Docker.

Đây là cấu hình được sử dụng cho người giám sát:

[supervisord]
nodaemon=true

[program:gunicorn]
command = /project/start.sh
user = www-data


[program:nginx]
command=/usr/sbin/nginx

Vấn đề là làm thế nào tôi khởi chạy Ngnix: theo mặc định, nó chạy trên nền trước. Điều này làm cho giám sát thử lại để chạy một phiên bản khác của Nginx.

Bằng cách thêm -g 'daemon off;'vào dòng lệnh, Nginx ở lại tiền cảnh, người giám sát đã ngừng cố gắng chạy một thể hiện khác.


1

Trong trường hợp của tôi, một trong các dịch vụ là Apache, Apache2 hoặc Nginx đã chạy và do đó tôi không thể khởi động dịch vụ khác.


0

Tôi đã có một số tệp * .save (kết xuất khẩn cấp từ nano) từ các tệp cấu hình NGINX khác nhau trong thư mục có thể truy cập trang web của tôi. Khi tôi xóa các tệp .save này, NGINX đã khởi động lại tốt. Tôi cho rằng những điều này là vô hại vì không có liên kết tương ứng, nhưng tôi đoán rằng tôi đã sai.


0

Để theo dõi câu trả lời @ lfender6445 và @SAURABH -

Vấn đề của tôi cũng là thực tế là sau khi nâng cấp lên Vagrant 2.2.2 Apache2 đã chạy như một máy chủ web khi khách khởi động. Trước đây tôi chỉ có nginx là một máy chủ web.

vagsh ssh vào hộp và chạy lệnh sau để vô hiệu hóa Apache2 khởi động bất cứ khi nào hộp khách khởi động:

sudo update-rc.d -f apache2 remove

Thoát ssh, dừng lại, mơ hồ lên. Vấn đề được giải quyết.


0

Nếu sự cố vẫn còn sau khi thử bất kỳ giải pháp nào ở trên, hãy khởi động lại máy chủ của bạn một lần. Nó làm việc cho tôi :)


Vâng, nó sẽ. Nhưng giết quá trình nginx và sau đó khởi động lại chỉ nginx cũng hoạt động. Đó là câu trả lời của @datdinhquoc.
Khom Nazid

0

Trong trường hợp của tôi, thủ phạm hóa ra là một khối máy chủ chứa:

        listen  127.0.0.1:80;
        listen  [::1]:80 ipv6only=on;
        server_name  localhost;

Trên Linux, ổ cắm nghe trên một IP cụ thể (ví dụ [::1]:80) xung đột với ổ cắm nghe trên cùng một cổng nhưng bất kỳ IP nào (nghĩa là [::]:80). Thông thường nginx sẽ giải quyết vấn đề này một cách minh bạch bằng cách sử dụng một ổ cắm duy nhất đằng sau cảnh này. Tuy nhiên, việc chỉ định rõ ràng ipv6only(hoặc một số tùy chọn khác) trên chỉ thị lắng nghe buộc nginx phải (cố gắng) tạo một ổ cắm riêng cho nó, do đó dẫn đếnAddress already in use lỗi.

ipv6only=ondù sao cũng là mặc định (kể từ 1.3.4), cách khắc phục chỉ đơn giản là xóa tùy chọn đó khỏi lệnh này và đảm bảo ipv6onlykhông sử dụng bất kỳ nơi nào khác trong cấu hình của tôi.


0

Tôi có cùng một vấn đề, nhưng tôi thấy cổng 80 được nghe bởi Nginx:

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      9730/nginx 

Nhưng khi tôi cố gắng khởi động lại nó, tôi gặp lỗi:

    service nginx restart
Stopping nginx:                                            [FAILED]
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] still could not bind()

Vấn đề của tôi là ở tệp cấu hình, tôi đang đặt tệp PID và dường như hệ thống không thể bắt đúng:

user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

Khi tôi gỡ bỏ nó, nó hoạt động.

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.