Comment démarrer nginx via un port différent (autre que 80)

128

Salut, je suis un débutant sur nginx, j'ai essayé de le configurer sur mon serveur (exécutant Ubuntu 4), qui a déjà apache en cours d'exécution.

Donc, après l'avoir apt-get installfait, j'ai essayé de démarrer nginx. Ensuite, je reçois le message comme celui-ci:

Starting nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
configuration file /etc/nginx/nginx.conf test is successful
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

Cela a du sens car Apache utilise le port 80.

Ensuite, j'ai essayé de modifier nginx.conf, je fais référence à certains articles, donc je l'ai changé comme ceci:

   server {

        listen       8080;

        location / {
         proxy_pass  http://xx.xx.xx.xx:9500;
         proxy_set_header   Host             $host:8080;
         proxy_set_header   X-Real-IP        $remote_addr;
         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
         proxy_set_header Via    "nginx";
        }

Après avoir sauvegardé ceci et essayé de redémarrer nginx, j'obtiens toujours la même erreur que précédemment. Je ne trouve pas vraiment de message à ce sujet, est-ce que de bonnes personnes pourraient briser de la lumière?

Merci d'avance :)

==================================================== ========================

Je devrais poster tout le contenu de la conf ici:

user www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    # multi_accept on;
}

http {
    include       /etc/nginx/mime.types;

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

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;

    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

   server {

        listen       81;

        location / {
         proxy_pass  http://94.143.9.34:9500;
         proxy_set_header   Host             $host:81;
         proxy_set_header   X-Real-IP        $remote_addr;
         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
         proxy_set_header Via    "nginx";
        }


    }
}

 mail {
      See sample authentication script at:
      http://wiki.nginx.org/NginxImapAuthenticateWithApachePhpScript

      auth_http localhost/auth.php;
      pop3_capabilities "TOP" "USER";
      imap_capabilities "IMAP4rev1" "UIDPLUS";

     server {
         listen     localhost:110;
         protocol   pop3;
         proxy      on;
     }

     server {
         listen     localhost:143;
         protocol   imap;
         proxy      on;
     }
 }

En gros, je n'ai rien changé sauf l'ajout de la partie serveur.

Zhao Peng
la source
Avez-vous le même message. Peut-être que le port avait changé pour un autre? Avez-vous essayé d'exécuter nginx via sudo?
dmr
Pour les centos, ce lien pourrait aider serverfault.com/questions/566317/…
vintuwei
Vous pouvez vous référer à ceci Utilisation de ports autres que 80 dans
NGINX
Vous pouvez vous référer à ceci Utilisation de ports autres que 80 dans
NGINX

Réponses:

182

Vous devez aller au /etc/nginx/sites-enabled/et si cela est la configuration par défaut, il devrait y avoir un fichier par nom: default.

Modifiez ce fichier en définissant le port souhaité; dans l'extrait ci-dessous, nous servons l'instance Nginx sur le port 81.

server {
    listen 81;
}

Pour démarrer le serveur, exécutez la ligne de commande ci-dessous;

sudo service nginx start

Vous pouvez maintenant accéder à votre application sur le port 81 (pour localhost, http: // localhost: 81 ).

Chamith Malinda
la source
Sinon, si vous n'avez pas installé de service (OS X, généralement), vous pouvez exécuter: sudo nginx -s reload
John Paul Barbagallo
Vous devrez peut-être redémarrer si nginx est déjà en cours d'exécutionsudo service nginx restart
depicus
3
J'obtiens une erreur dans Chrome en essayant avec le port 81: "Cette page Web n'est pas disponible ERR_CONNECTION_TIMED_OUT" mais avec 80 fonctionne bien.
Darius.V
Je l'ai fait mais quand je cours netstat, il y a toujours quelque chose qui écoute sur le port 80. Avez-vous une idée?
Mustafa Chelik
Vérifiez également par défaut/etc/nginx/sites-available directory
Amit Teli
22

Vous devrez changer le port de configuration d'Apache ou de Nginx. Après cela, vous devrez redémarrer les serveurs reconfigurés à l'aide de la commande «service» que vous avez utilisée.


Apache

Éditer

sudo subl /etc/apache2/ports.conf 

et changez le 80 sur la ligne suivante en quelque chose de différent:

Listen 80

Si vous changez simplement le port ou ajoutez plus de ports ici, vous devrez probablement également modifier l'instruction VirtualHost dans

sudo subl /etc/apache2/sites-enabled/000-default.conf

et changez le 80 sur la ligne suivante en quelque chose de différent:

<VirtualHost *:80>

puis redémarrez par:

sudo service apache2 restart

Nginx

Éditer

/etc/nginx/sites-enabled/default

et changez le 80 sur la ligne suivante:

listen 80;

puis redémarrez par:

sudo service nginx restart
Marco Schoolenberg
la source
20

Suivez ceci: Ouvrez votre fichier de configuration

vi /etc/nginx/conf.d/default.conf

Changez le numéro de port sur lequel vous écoutez;

listen       81;
server_name  localhost;

Ajouter une règle à iptables

 vi /etc/sysconfig/iptables 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 81 -j ACCEPT

Redémarrez IPtables

 service iptables restart;

Redémarrez le serveur nginx

service nginx restart

Accéder aux fichiers du serveur nginx sur le port 81

sinshiva
la source
1
Mon problème a été résolu en utilisant cette méthode qui vous ressemblait presque.
sinshiva
FYI: Le nom de fichier correct pour nginx sous Windows serait conf \ nginx.conf
Johnny Bigoode
Le nom du fichier de configuration n'a pas d'importance, car tout le répertoire de configuration est généré.
sinshiva
3

Si vous êtes sur Windows , puis en dessous les paramètres du serveur sont liés à des ports présents dans le fichier nginx.conf à <nginx chemin d'installation> / conf dossier.

server {
    listen       80;
    server_name  localhost;
....

Modifiez le numéro de port et redémarrez l'instance.

skvp
la source
1

Si vous rencontrez ce problème lors de l'utilisation de Docker, assurez-vous de mapper les numéros de port corrects. Si vous mappez le port 81:80 lors de l'exécution de docker (ou via docker-compose.yml), votre nginx doit écouter sur le port 80 et non sur 81, car docker effectue déjà le mappage.

J'ai moi-même passé un certain temps sur cette question, alors j'espère que cela pourra aider les futurs googleurs.

thephper
la source