nginx - nginx: [emerg] bind () ke [::]: 80 gagal (98: Alamat sudah digunakan)

248

Tiba-tiba saya mendapatkan kesalahan nginx di bawah ini

 * 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.

Jika saya lari

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

Saya tidak mendapatkan apa-apa. Tidak ada pada port 80

Lalu saya jalankan di bawah ini:

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   - 

Saya bingung. Bagaimana cara saya men-debug ini?

Saya menggunakan uwsgi dengan proxy pada port 8070. uwsgi sedang berjalan. Nginx tidak. Saya menggunakan ubuntu 12.4

Di bawah ini adalah bagian relevan dari file conf nginx saya

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

Inilah cara saya menginstal nginx di ubuntu 12.04

nginx=stable;add-apt-repository ppa:nginx/$nginx;
apt-get update
apt get install nginx-full
Tampa
sumber
19
Saya menemukan masalah yang belum pernah saya miliki sebelumnya. Saya harus menghapus / etc / nginx / sites-available / default. Lalu berhasil. Conf saya ada di / etc / nginx / default
Tampa
Saya menjalankan Nginx + Varnish dan mengalami kesalahan ini. Solusinya adalah berhenti atas keduanya, kemudian mulai nginx pertama dan kemudian pernis.
Ben
Anda dapat mencoba menghentikan layanan yang disebutkan.
amal
sudahkah Anda menghapus default dari situs-enabled?
Wolfpack'08
Saya mencoba semua solusi di sini. Memeriksa semua port yang digunakan (itu sedang digunakan oleh NGINX sendiri) jadi saya membunuh port dan me-restart itu. Bekerja seperti pesona.
gavin

Jawaban:

202

[::]:80 adalah alamat ipv6.

Kesalahan ini dapat disebabkan jika Anda memiliki konfigurasi nginx yang mendengarkan pada port 80 dan juga pada port [::]:80.

Saya memiliki yang berikut ini di file situs standar yang tersedia:

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

Anda dapat memperbaiki ini dengan menambahkan ipv6only=onke [::]:80seperti ini:

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

Untuk informasi lebih lanjut, lihat:

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

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

Nathan
sumber
11
Anda juga dapat memperbaikinya dengan hanya menghapus mendengarkan 80; karena dengarkan [::]: 80 mendengarkan IPv4 dan IPv6. Berhati-hatilah karena beberapa sistem (seperti FreeBSD) memisahkan soket IPv4 dan IPv6 dan kemudian tidak akan berfungsi, tetapi untuk Linux itu harus baik-baik saja. wiki.nginx.org/HttpCoreModule#listen
gitaarik
4
Terima kasih telah menggali ini dan memberikan penjelasan mengapa menghapus /etc/nginx/sites-available/defaultmembantu dengan kesalahan di atas.
Oliver
1
Bahkan ketika saya mengomentari baris ipv6, saya masih mendapatkan kesalahan yang sama ketika saya mencoba sudo service nginx restart. Ketika saya melakukannya netstat -tulpn |grep 80, saya hanya mendapatkan sekali proses nginx (0.0.0.0:80). Adakah ide mengapa ini tidak dimulai kembali?
Roman
Saya kedua apa yang dikatakan @rednaw, tetapi alih-alih menghapus mendengarkan, Anda dapat komentar saja
d4nyll
Pengaturan ipv6only=onmemperbaiki masalah, tetapi nginx harus benar-benar mendeteksi bahwa ia mencoba mengikat ke antarmuka yang sama: port dua kali.
Dan Dascalescu
246

saya memperbaiki ini dengan menjalankan sudo apachectl stop- ternyata apache berjalan di latar belakang dan mencegah nginx memulai pada port yang diinginkan.

Di jalankan ubuntu sudo /etc/init.d/apache2 stop

lfender6445
sumber
8
Gunakan sudo /etc/init.d/apache2 stopuntuk menghentikan apache di Ubuntu 14.04
Footniko
3
Alasannya adalah karena Anda tidak dapat memiliki dua server web mendengarkan port yang sama. Pilih satu, dan jika perlu, proxy. Misalnya menggunakan nginx, tetapi untuk permintaan tertentu (seperti untuk phpfile), proxy ke port Apache.
d4nyll
Sama di sini pada instalasi debian 9 baru.
jirarium
Terima kasih. Tapi ada yang tahu mengapa itu tiba-tiba mulai? Saya tidak menyentuh server selama seminggu, tetapi sudah dimulai tadi malam.
Ajay Singh
1
Terima kasih atas solusinya. Ini berfungsi untuk saya, saya menggunakan Google Cloud Platform
congle
92

Kasus saya berbeda, saya harus membunuh menjalankan Nginx untuk me-restart itu.

Dari pada

sudo systemctl restart nginx

Saya harus menggunakan:

sudo pkill -f nginx & wait $!
sudo systemctl start nginx
datdinhquoc
sumber
1
Saya mengambil 404 Tidak Ditemukan, dan saya menggunakan saran Anda, sekarang saya memang memperbaiki masalah saya. Terima kasih.
Bay
3
Ini berhasil untuk saya. Tidak ada yang lain. Tidak yakin proses apa yang dimulai ketika sistem reboot, tetapi saya hanya akan menambahkan ini di restart rutin saya nginx. Terima kasih!
Khom Nazid
38

Saya menemukan masalah yang belum pernah saya miliki sebelumnya.

Saya hanya perlu menghapus /etc/nginx/sites-available/default. Lalu berhasil.

Conf saya ada di /etc/nginx/default.

Tampa
sumber
2
+1 Solusi ini berfungsi untuk saya, tetapi kemudian saya pikir pasti ada sesuatu yang secara default menyebabkan masalah, jadi saya menggali sedikit lebih dalam dan memberikan jawaban dengan info lebih lanjut.
Nathan
11
Saya berpendapat bahwa menghapus templat konfigurasi situs default bukanlah solusi terbaik - mengomentari baris yang berisi listen 80;dalam templat yang sama sudah memecahkan masalah dan dengan benar demikian. Trik Anda berhasil tetapi bukan apa yang saya ingin pembaca di masa depan pertanyaan Anda lakukan. Itu sebabnya saya menyarankan Anda memilih jawaban @ Nathan sebagai jawaban yang benar.
Oliver
4
Saya memiliki masalah yang sama setelah menjalankan apt-get dist-upgrade, yang memutakhirkan paket nginx, yang membuat tautan /etc/nginx/sites-enabledke /etc/nginx/sites-available/default. nginx mencoba memuat konfigurasi default ini, yang mendengarkan port 80 melalui IPv6, kemudian juga memuat saya membaca konfigurasi asli saya. Menghapus symlink itu memperbaiki masalah.
Dan Dascalescu
15
ANDA TIDAK PERLU HAPUS /etc/nginx/sites-available/default , cukup hapus tautan simbolis ke sana -sudo rm /etc/nginx/sites-enabled/default
d4nyll
Saya mengalami masalah ini ketika mencoba untuk berjalan nginxpada port 8080 dan varnishpada port 80 dan mirip dengan jawaban ini, saya menemukan masalah dengan nginxkonfigurasi default masih mendengarkan pada port 80 meskipun sites-availablekonfigurasi saya semua mendengarkan pada port 8080. Ini terletak di/etc/nginx/conf.d/default
zigojacko
24

Saya juga mendapatkan kesalahan yang sama.

nginx: [emerg] bind () ke [::]: 80 gagal (98: Alamat sudah digunakan)

dan ketika saya mengetik localhost di browser, maka saya mendapatkan

Berhasil!

Ini adalah halaman web default untuk server ini.

Perangkat lunak server web sedang berjalan tetapi belum ada konten yang ditambahkan. bukannya halaman selamat datang nginx, apache2 berjalan pada port yang sama,

  1. temukan file ports.conf apache2

    sudo /etc/apache2/ports.conf
    
  2. ubah port lain lalu 80, saya menjadikannya sebagai70

  3. simpan file

  4. restart sistem Anda

itu akan bekerja untuk Anda juga, jika Anda mengetik localhost di browser, Anda akan mendapatkan halaman selamat datang nginx

SAURABH
sumber
1
Anda mungkin tidak ingin menjalankan keduanya Apache2 dan nginx secara bersamaan. Saya menemukan instalasi Apache memulai layanan. Jadi, saya mengeluarkan "sudo /etc/init.d/apache2 stop", dan kemudian dapat memulai nginx secara normal. Ini juga menyelamatkan Anda dari me-reboot sistem Anda.
Chris Westin
1
Anda benar bahwa menghapus tautan sym / / etc / nginx / sites-enabled / default tidak mencegahnya untuk mendengarkan pada dua port. Saya merasa agak menjengkelkan bahwa setiap tutorial tentang nginx dimulai dengan menyarankan semua orang menghapus tautan "default" tapi itu topik yang berbeda.
eschipul
@IgorGanapolsky beralih Apache ke port yang berbeda?
Menasheh
10

coba lakukan perintah ini

sudo fuser -k 443/tcp
service nginx restart
mendongkrak
sumber
8

Masalah saya adalah bahwa saya memiliki tumpang tindih mendengarkan arahan. Saya telah berhasil menemukan arahan yang tumpang tindih dengan berlari

grep -r listen /etc/nginx/*

Dua file sedang mendengarkan di port yang sama:

/etc/nginx/conf.d/default.conf:           listen 80;  
/etc/nginx/sites-enabled/default.conf:    listen 80;
Hitam
sumber
3
Itu cara yang sangat rapi untuk memeriksa hal-hal: grep -r listen /etc/nginx/*terima kasih telah berbagi!
Newskooler
6

Saya memiliki masalah yang sama di letsencrypt (certbot) dan nginx,

ref: https://github.com/certbot/certbot/issues/5486

kesalahan ini belum memiliki solusi

jadi, mengubah cron untuk perpanjangan (meletakkan ulang setelah memperbarui) (menggunakan saran dari 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"

log (pendek):

-- 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()
Wagner Pereira
sumber
1
Super acak, tapi ini adalah masalah yang saya yakini. terima kasih sudah memposting ini. kesalahan saya tampaknya bermanifestasi karena entri domain yang ketinggalan jaman ia mencoba memperbarui tetapi tidak bisa karena saya tidak mengontrol domain lagi.
w--
Saya kira ini mungkin masalah saya juga. tapi saya harus menunggu untuk melihatnya
Oscar Zhou1989
2

Pertama-tama ubah apache dengarkan port 80 ke 8080 apache di /etc/apache2/ports.conf sertakan

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

atau

sudo service httpd restart    // in case of centos

kemudian tambahkan nginx sebagai server proxy terbalik yang akan mendengarkan port 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
}

Setelah perubahan restart server nginx

sudo service nginx restart

Sekarang semua lalu lintas akan ditangani oleh server nginx dan mengirim semua permintaan dinamis ke apache dan konten statis dilayani oleh server nginx.

Untuk konfigurasi lanjut seperti cache:

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

Kamal Kumar
sumber
1

Saya bertemu masalah serupa. lognya seperti di bawah ini

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

Yang terakhir [emerg]menunjukkan apa duplicate listen options for [::]:80artinya ada lebih dari satu file blok nginx [::]:80.

Solusi saya adalah menghapus salah satu [::]:80pengaturan

PS Anda mungkin memiliki file blok default. Saran saya adalah menjaga file ini sebagai server default untuk port 80. dan menghapus [::]:80dari file blok lainnya

Oscar Zhou1989
sumber
1

Saya menggunakan pengawas untuk menjalankan Nginx dan Gunicorn berdampingan di wadah Docker.

Ini adalah konfigurasi yang digunakan untuk penyelia:

[supervisord]
nodaemon=true

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


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

Masalahnya adalah bagaimana saya meluncurkan Ngnix: secara default berjalan di latar depan. Ini membuat supervisi coba lagi untuk menjalankan instance lain dari Nginx.

Dengan menambahkan -g 'daemon off;'ke baris perintah, Nginx tetap di latar depan, pengawas berhenti mencoba menjalankan contoh lain.

Sebastien DA ROCHA
sumber
1

Dalam kasus saya, salah satu layanan baik Apache, Apache2 atau Nginx sudah berjalan dan karena itu saya tidak dapat memulai layanan lainnya.

Rishikesh Chandra
sumber
0

Saya punya beberapa file * .save (dump darurat dari nano) dari berbagai file konfigurasi NGINX di dir-situs saya yang tersedia. Setelah saya menghapus file .save ini, NGINX memulai kembali dengan baik. Saya berasumsi ini tidak berbahaya karena tidak ada symlink yang sesuai, tapi saya kira saya salah.

Allen
sumber
0

Untuk mengikuti jawaban @ lfender6445 dan @SAURABH -

Masalah saya juga adalah kenyataan bahwa setelah memutakhirkan ke Vagrant 2.2.2 Apache2 dijalankan sebagai server web ketika tamu boot. Di masa lalu saya hanya punya nginx sebagai server web.

gelandangan ssh ke dalam kotak dan jalankan perintah berikut untuk menonaktifkan Apache2 dari memulai setiap kali kotak tamu boot:

sudo update-rc.d -f apache2 remove

Keluar ssh, gelandangan berhenti, gelandangan naik. Masalah terpecahkan.

Lance Cleveland
sumber
0

Jika masalah tetap ada setelah mencoba salah satu solusi di atas, Nyalakan ulang server Anda sekali. Ini bekerja untuk saya :)

Deejay
sumber
Ya tentu saja. Tetapi mematikan proses nginx dan kemudian memulai kembali hanya nginx juga berfungsi. Itulah jawabannya oleh @datdinhquoc.
Khom Nazid
0

Dalam kasus saya pelakunya ternyata adalah blok server yang berisi:

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

Di Linux, soket yang mendengarkan pada IP tertentu (misalnya [::1]:80) bertentangan dengan soket yang mendengarkan pada port yang sama tetapi IP apa pun (yaitu [::]:80). Biasanya nginx akan menangani masalah ini secara transparan dengan menggunakan satu soket di belakang layar ini. Namun, secara eksplisit menentukan ipv6only(atau opsi tertentu lainnya) pada directive listen memaksa nginx untuk (mencoba) membuat soket terpisah untuk itu, sehingga menghasilkan Address already in usekesalahan.

Karena itu ipv6only=onadalah defaultnya (sejak 1.3.4) perbaikannya adalah hanya untuk menghapus opsi itu dari arahan ini, dan memastikan ipv6onlytidak digunakan di tempat lain di konfigurasi saya.

Matthijs
sumber
0

Saya memiliki masalah yang sama, tetapi saya melihat bahwa port 80 didengarkan oleh Nginx:

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

Tetapi ketika saya mencoba untuk me-restart itu, saya memiliki kesalahan:

    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()

Masalah saya ada di file konfigurasi, saya mengatur file PID, dan sepertinya sistem tidak dapat menangkapnya dengan benar:

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

Ketika saya menghapusnya, itu berhasil.

zombi_man
sumber