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
Jawaban:
[::]: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:
Anda dapat memperbaiki ini dengan menambahkan
ipv6only=on
ke[::]:80
seperti ini:Untuk informasi lebih lanjut, lihat:
http://forum.linode.com/viewtopic.php?t=8580
http://wiki.nginx.org/HttpCoreModule#listen
sumber
/etc/nginx/sites-available/default
membantu dengan kesalahan di atas.sudo service nginx restart
. Ketika saya melakukannyanetstat -tulpn |grep 80
, saya hanya mendapatkan sekali proses nginx (0.0.0.0:80). Adakah ide mengapa ini tidak dimulai kembali?ipv6only=on
memperbaiki masalah, tetapi nginx harus benar-benar mendeteksi bahwa ia mencoba mengikat ke antarmuka yang sama: port dua kali.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
sumber
sudo /etc/init.d/apache2 stop
untuk menghentikan apache di Ubuntu 14.04php
file), proxy ke port Apache.Kasus saya berbeda, saya harus membunuh menjalankan Nginx untuk me-restart itu.
Dari pada
Saya harus menggunakan:
sumber
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
.sumber
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.apt-get dist-upgrade
, yang memutakhirkan paket nginx, yang membuat tautan/etc/nginx/sites-enabled
ke/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./etc/nginx/sites-available/default
, cukup hapus tautan simbolis ke sana -sudo rm /etc/nginx/sites-enabled/default
nginx
pada port 8080 danvarnish
pada port 80 dan mirip dengan jawaban ini, saya menemukan masalah dengannginx
konfigurasi default masih mendengarkan pada port 80 meskipunsites-available
konfigurasi saya semua mendengarkan pada port 8080. Ini terletak di/etc/nginx/conf.d/default
Saya juga mendapatkan kesalahan yang sama.
dan ketika saya mengetik localhost di browser, maka saya mendapatkan
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,
temukan file ports.conf apache2
ubah port lain lalu
80
, saya menjadikannya sebagai70
simpan file
restart sistem Anda
itu akan bekerja untuk Anda juga, jika Anda mengetik localhost di browser, Anda akan mendapatkan halaman selamat datang nginx
sumber
coba lakukan perintah ini
sumber
Masalah saya adalah bahwa saya memiliki tumpang tindih mendengarkan arahan. Saya telah berhasil menemukan arahan yang tumpang tindih dengan berlari
Dua file sedang mendengarkan di port yang sama:
sumber
grep -r listen /etc/nginx/*
terima kasih telah berbagi!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)log (pendek):
sumber
Pertama-tama ubah apache dengarkan port 80 ke 8080 apache di /etc/apache2/ports.conf sertakan
atau
kemudian tambahkan nginx sebagai server proxy terbalik yang akan mendengarkan port apache
Setelah perubahan restart server nginx
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
sumber
Saya bertemu masalah serupa. lognya seperti di bawah ini
Yang terakhir
[emerg]
menunjukkan apaduplicate listen options for [::]:80
artinya ada lebih dari satu file blok nginx[::]:80
.Solusi saya adalah menghapus salah satu
[::]:80
pengaturanPS Anda mungkin memiliki file blok default. Saran saya adalah menjaga file ini sebagai server default untuk port 80. dan menghapus
[::]:80
dari file blok lainnyasumber
Saya menggunakan pengawas untuk menjalankan Nginx dan Gunicorn berdampingan di wadah Docker.
Ini adalah konfigurasi yang digunakan untuk penyelia:
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.sumber
Dalam kasus saya, salah satu layanan baik Apache, Apache2 atau Nginx sudah berjalan dan karena itu saya tidak dapat memulai layanan lainnya.
sumber
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.
sumber
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:
Keluar ssh, gelandangan berhenti, gelandangan naik. Masalah terpecahkan.
sumber
Jika masalah tetap ada setelah mencoba salah satu solusi di atas, Nyalakan ulang server Anda sekali. Ini bekerja untuk saya :)
sumber
Dalam kasus saya pelakunya ternyata adalah blok server yang berisi:
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 menentukanipv6only
(atau opsi tertentu lainnya) pada directive listen memaksa nginx untuk (mencoba) membuat soket terpisah untuk itu, sehingga menghasilkanAddress already in use
kesalahan.Karena itu
ipv6only=on
adalah defaultnya (sejak 1.3.4) perbaikannya adalah hanya untuk menghapus opsi itu dari arahan ini, dan memastikanipv6only
tidak digunakan di tempat lain di konfigurasi saya.sumber
Saya memiliki masalah yang sama, tetapi saya melihat bahwa port 80 didengarkan oleh Nginx:
Tetapi ketika saya mencoba untuk me-restart itu, saya memiliki kesalahan:
Masalah saya ada di file konfigurasi, saya mengatur file PID, dan sepertinya sistem tidak dapat menangkapnya dengan benar:
Ketika saya menghapusnya, itu berhasil.
sumber