Cómo iniciar nginx a través de un puerto diferente (que no sea 80)

128

Hola, soy un novato en nginx, intenté configurarlo en mi servidor (que ejecuta Ubuntu 4), que ya tiene apache ejecutándose.

Entonces, después de apt-get installeso, intenté iniciar nginx. Entonces recibo el siguiente mensaje:

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)

Eso tiene sentido ya que Apache está utilizando el puerto 80.

Luego traté de modificar nginx.conf, hago referencia a algunos artículos, así que lo cambié así:

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

Después de guardar esto e intentar iniciar nginx nuevamente, sigo teniendo el mismo error que anteriormente. Realmente no puedo encontrar una publicación relacionada sobre esto, ¿podría alguna buena gente aclarar algo?

Gracias por adelantado :)

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

Debería publicar todo el contenido en conf aquí:

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

Básicamente, no cambié nada excepto agregar la parte del servidor.

Zhao Peng
fuente
¿Tienes el mismo mensaje? Puede ser puerto había cambiado a otro? ¿Intentaste ejecutar nginx a través de sudo?
Dmr
Para centos, este enlace podría ayudar a serverfault.com/questions/566317/…
vintuwei
Puede consultar esto Uso de puertos que no sean 80 en NGINX
Shomaail
Puede referirse a esto usando puertos que no sean 80 en NGINX
Shomaail

Respuestas:

182

Tienes que ir a la /etc/nginx/sites-enabled/y si esta es la configuración por defecto, entonces debe haber un archivo por su nombre: default.

Edite ese archivo definiendo su puerto deseado; En el fragmento a continuación, estamos sirviendo la instancia de Nginx en el puerto 81.

server {
    listen 81;
}

Para iniciar el servidor, ejecute la línea de comando a continuación;

sudo service nginx start

Ahora puede acceder a su aplicación en el puerto 81 (para localhost, http: // localhost: 81 ).

Chamith Malinda
fuente
Alternativamente, si no tiene instalado el servicio (OS X, por lo general) puede ejecutar: sudo nginx -s reload
John Paul Barbagallo
Es posible que deba reiniciar si nginx ya se está ejecutandosudo service nginx restart
representa el
3
Recibo un error en Chrome al intentar con el puerto 81: "Esta página web no está disponible ERR_CONNECTION_TIMED_OUT" pero con 80 funciona bien.
Darius.V
Hice esto pero cuando corro netstat, todavía hay algo escuchando en el puerto 80. ¿Tienes alguna idea?
Mustafa Chelik
También verifique el valor predeterminado en/etc/nginx/sites-available directory
Amit Teli
22

Deberá cambiar el puerto de configuración de Apache o Nginx. Después de hacer esto, deberá reiniciar los servidores reconfigurados, utilizando el comando 'servicio' que utilizó.


apache

Editar

sudo subl /etc/apache2/ports.conf 

y cambie el 80 en la siguiente línea a algo diferente:

Listen 80

Si solo cambia el puerto o agrega más puertos aquí, es probable que también tenga que cambiar la instrucción VirtualHost en

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

y cambie el 80 en la siguiente línea a algo diferente:

<VirtualHost *:80>

luego reiniciar por:

sudo service apache2 restart

Nginx

Editar

/etc/nginx/sites-enabled/default

y cambia el 80 en la siguiente línea:

listen 80;

luego reiniciar por:

sudo service nginx restart
Marco Schoolenberg
fuente
20

Siga esto: abra su archivo de configuración

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

Cambie el número de puerto en el que está escuchando;

listen       81;
server_name  localhost;

Agregar una regla a iptables

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

Reiniciar IPtables

 service iptables restart;

Reinicie el servidor nginx

service nginx restart

Acceda a los archivos del servidor nginx en el puerto 81

sinshiva
fuente
1
Mi problema se resolvió usando este método que era casi similar a usted.
sinshiva
FYI: El nombre de archivo correcto para nginx en Windows sería conf \ nginx.conf
Johnny Bigoode
No importa cuál sea el nombre del archivo conf ya que se obtiene todo el directorio conf.
sinshiva
3

Si está en Windows, entonces la configuración del servidor relacionada con el puerto está presente en el archivo nginx.conf en <nginx installation path> / conf folder.

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

Cambie el número de puerto y reinicie la instancia.

skvp
fuente
1

Si tiene este problema al usar Docker, asegúrese de asignar los números de puerto correctos. Si asigna el puerto 81:80 cuando ejecuta docker (o a través de docker-compose.yml), su nginx debe escuchar en el puerto 80 no 81, porque docker ya hace la asignación.

Pasé bastante tiempo sobre este tema, así que espero que pueda ser de ayuda para futuros googlers.

thephper
fuente