nginx erreur: (99: Ne peut pas attribuer une adresse demandée)
Je suis sous Ubuntu Hardy 8.04 et nginx 0.7.65, et quand j'ai essayer de lancer mon serveur nginx:
$ sudo /etc/init.d/nginx start
J'obtiens l'erreur suivante:
Starting nginx: [emerg]: bind() to IP failed (99: Cannot assign requested address)
où la "propriété intellectuelle" est un espace réservé pour mon adresse IP. Quelqu'un sait pourquoi cette erreur peut se produire? C'est en cours d'exécution sur EC2.
Mon nginx.fichier conf ressemble à ceci:
user www-data www-data;
worker_processes 4;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
access_log /usr/local/nginx/logs/access.log;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 3;
gzip on;
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/css application/x-javascript text/xml application/xml
application/xml+rss text/javascript;
include /usr/local/nginx/sites-enabled/*;
}
et mon /usr/local/nginx/sites-enabled/exemple.com ressemble:
server {
listen IP:80;
server_name example.com;
rewrite ^/(.*) https://example.com/$1 permanent;
}
server {
listen IP:443 default ssl;
ssl on;
ssl_certificate /etc/ssl/certs/myssl.crt;
ssl_certificate_key /etc/ssl/private/myssl.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP;
server_name example.com;
access_log /home/example/example.com/log/access.log;
error_log /home/example/example.com/log/error.log;
}
Vous devez vous connecter pour publier un commentaire.
De sorte que vous devez dire à votre linux à permettre aux processus de se lier à la non-locale de l'adresse. Il suffit d'ajouter la ligne suivante dans
/etc/sysctl.conf
fichier:et ensuite recharger votre sysctl.conf par:
$ sysctl -p /etc/sysctl.conf
qui sera bien sur redémarre.
Pour éviter de coder en dur l'adresse IP dans la config, ce faire:
Comme kirpit mentionné ci-dessus, vous aurez envie de permettre à linux de processus pour se lier à une adresse IP locale:
Ensuite, vous voulez pour ajouter les adresse ip privée qui est associé à votre adresse ip élastique et l'ajouter à vos sites config:
Recharger nginx:
Tout fait!
Il pourrait y avoir des restants processus/programme à l'aide de/l'écoute sur le port 80.
Vous pouvez le vérifier à l'aide de la commande netstat -lp.
Tuer les processus et commencer à nginx.
Avec Amazon EC2 et elastic ip, le serveur n'a pas fait connaître son IP comme avec la plupart n'importe quel autre serveur. Ainsi, dans le hôte virtuel apache fichiers au moins vous mettez de l' *:80 plutôt que votre adresse ip élastique :80
Alors qu'il fonctionne correctement. Donc, en théorie, faire *:80 pour nginx devrait fonctionner de la même, mais quand vous le faites, vous obtenez [emerg]: bind() pour 0.0.0.0:80 échoué (98: Adresse déjà en cours d'utilisation). N'ai pas trouvé de solution pour le moment.
.
Pour les personnes qui pourraient être aux prises avec cela à l'avenir, j'ai juste regardé mon IP privée dans l'instance AWS et lié à que. J'ai vérifié que nginx est capable d'écouter le public et de faire de mon réécrire la suite. Je ne pouvais pas faire *:PORT que j'avais un serveur interne, j'ai été l'utilisation de proxy pour.
Si vous utilisez le Gestionnaire de Réseau, vous devez vous attendre à augmenter le réseau de l'interface avant le démarrage de la prestation:
systemctl enable NetworkManager-attendre-en ligne.service
Pour Amazon EC2 et les adresses ip élastiques,
sysctl.conf
ne fonctionnera pas comme nginx pas encore écouter sureth0
.Donc, vous avez besoin de
listen *;