J'ai actuellement un vhost fonctionnant sur Nginx pour foo.domain.com et tout fonctionne très bien.
J'ai créé un nouveau fichier pour un nouveau sous-domaine que je veux ajouter appelé bar.domain.com. J'utilise les mêmes paramètres pour les deux.
Lorsque je redémarre Nginx, je reçois
Restarting nginx: nginx: [warn] conflicting server name "" on 0.0.0.0:443, ignored nginx.
Quand je vais sur bar.domain.com, je vois ce que je suis censé voir, mais quand je vais sur foo.domain.com, je vois la page vers laquelle bar.domain.com renvoie.
Foo
upstream php-handler {
server unix:/var/run/php5-fpm.sock;
}
server {
listen 80;
server_name foo.domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
ssl on;
ssl_certificate [path_foo]/cacert.pem;
ssl_certificate_key [path_foo]/privkey.pem;
root [path]/foo;
...
}
Bar
server {
listen 80;
server_name bar.domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
ssl on;
ssl_certificate [path_bar]/cacert.pem;
ssl_certificate_key [path_bar]/privkey.pem;
root [path]/bar;
}
Où vais-je mal?
nginx
ssl
virtualhost
RockJake28
la source
la source
server_name
dans la configuration SSL (443).listen 443
sur chaque serveur ajouterserver_name [foo/bar].domain.com
?Réponses:
Il me semble que vos blocs https nécessitent également des noms de serveur, par exemple
la source
Vous pouvez également avoir des fichiers supplémentaires
/etc/nginx/sites-available/<site-name>
liés à/etc/nginx/sites-enabled/<site-name>
.Les paramètres de ces fichiers peuvent entrer en conflit avec le
/etc/nginx/sites-available/default
fichierla source
J'ai eu un problème similaire lorsque j'ai eu accidentellement un nom de serveur en double:
Corrigé en le changeant en:
la source
server_name
; J'ai cette configuration depuis des années et je ne me suis jamais beaucoup inquiété de ce message d'erreur. Il s'avère que je commençais par erreur un vhost qui était censé être juste un modèle 😮Vérifiez également chaque fichier
/etc/nginx/conf.d
pour les doublons.Dans mon cas,
nginx -t
j'ai réussi les tests - j'ai reçu ce message d'erreur lors de la tentative de démarrage de nginx.Mes
/etc/nginx/sites-enabled
fichiers étaient libres doublons de domaine (nom du serveur), et avait seulement 1 référence àserver_default
(et pas delocalhost
doublons)Au lieu de cela, il y avait 2 fichiers dans
conf.d
lesquels tous deux faisaient référence à un domaine particulier (c'est-à-dire que 2 fichiers avaient une ligne comme:,servername mydomain.com
où l'un des noms de domaine était répertorié dans 2 fichiers).Ma solution: assurez-vous donc que tous les fichiers
conf.d
ne référencent qu'une seuleservername
fois une valeur particulière (nom de domaine).( malheureusement, après avoir résolu le problème ci-dessus, je reçois maintenant:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
des messages d'erreur lorsque j'essaie de redémarrer nginx.)mise à jour : Pour votre information, re: ...
Address already in use
message d'erreur ci - dessus:Tout ce que je devais faire était
sudo fuser -k 80/tcp
alorsservice nginx restart
travaillé comme un charme!J'ai trouvé la réponse ici: https://easyengine.io/tutorials/nginx/troubleshooting/emerg-bind-failed-98-address-already-in-use/
update2 :
Il a été suggéré qu'un autre processus utilisait le port 80, (c'est pourquoi le tuer a fonctionné, et il est également logique que b / c nginx ne soit pas en cours d'exécution à l'époque).
https://community.letsencrypt.org/t/nginx-emerg-bind-to-80-failed-98-address-already-in-use/52914/4
Ils soulignent également que voir le processus, avant de le tuer, pourrait donner un aperçu de la cause du problème.
Par conséquent, il est probablement préférable d'utiliser soit:
sudo fuser -k 80/tcp
(sans l'option -k), suivi d'ungrep
pour ces numéros de processus.systemctl list-unit-files
sortie, peut fournir un aperçu des processus conflictuelsou:,
fuser -kivn tcp 80
où:-v
imprime le nom du processus en plus de l'ID du processus le-i
rend rapide avant de tuerhttps://community.letsencrypt.org/t/nginx-emerg-bind-to-80-failed-98-address-already- en service / 52914/5
la source
Dans mon cas, je n'ai trouvé aucun doublon. Cependant, j'avais le fichier default.conf où j'ai commenté toute la configuration, sauf le bloc serveur d'ouverture et le crochet de fermeture ... et cela a provoqué l'erreur conflictuelle.
Fondamentalement, c'était un bloc de serveur non comptabilisé SANS directive server_name qui a causé le problème, pas un doublon.
la source