Como iniciar o nginx através de uma porta diferente (diferente de 80)


128

Olá, sou iniciante no nginx, tentei configurá-lo no meu servidor (executando o Ubuntu 4), que já possui o apache em execução.

Então, depois apt-get installdisso, tentei iniciar o nginx. Então eu recebo a mensagem assim:

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)

Isso faz sentido, pois o Apache está usando a porta 80.

Então eu tentei modificar nginx.conf, refiro alguns artigos, então mudei assim:

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

Depois de salvar isso e tentar iniciar o nginx novamente, ainda recebo o mesmo erro que anteriormente. Eu realmente não consigo encontrar um post relacionado sobre isso, poderia alguém bom trazer alguma luz?

Desde já, obrigado :)

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

Devo postar todo o conteúdo em conf aqui:

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

Basicamente, não mudei nada, exceto adicionar a parte do servidor.


Você tem a mesma mensagem? Pode ser porta tinha mudado para outro? Você tentou executar o nginx via sudo?
Dmr

Para centos, esse link pode ajudar serverfault.com/questions/566317/…
vintuwei 6/15


Respostas:


182

Você tem que ir ao /etc/nginx/sites-enabled/e se esta é a configuração padrão, então deve haver um arquivo pelo nome: default.

Edite esse arquivo definindo a porta desejada; no snippet abaixo, estamos servindo a instância Nginx na porta 81.

server {
    listen 81;
}

Para iniciar o servidor, execute a linha de comando abaixo;

sudo service nginx start

Agora você pode acessar seu aplicativo na porta 81 (para localhost, http: // localhost: 81 ).


Como alternativa, se você não tiver o serviço instalado (OS X, geralmente), poderá executar: sudo nginx -s reload
John Paul Barbagallo

Pode ser necessário reiniciar se o nginx já estiver em execuçãosudo service nginx restart
depicus

3
Estou recebendo erro no chrome ao tentar com a porta 81: "Esta página da web não está disponível ERR_CONNECTION_TIMED_OUT", mas com 80 funciona bem.
precisa saber é o seguinte

Eu fiz isso, mas quando corro netstat, ainda há algo escutando na porta 80. Você tem alguma ideia?
Mustafa Chelik

Verifique também o padrão em/etc/nginx/sites-available directory
Amit Teli

22

Você precisará alterar a porta de configuração do Apache ou Nginx. Depois de fazer isso, você precisará reiniciar os servidores reconfigurados, usando o comando 'service' que você usou.


Apache

Editar

sudo subl /etc/apache2/ports.conf 

e altere o 80 na seguinte linha para algo diferente:

Listen 80

Se você apenas alterar a porta ou adicionar mais portas aqui, provavelmente também precisará alterar a instrução VirtualHost em

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

e altere o 80 na seguinte linha para algo diferente:

<VirtualHost *:80>

depois reinicie:

sudo service apache2 restart

Nginx

Editar

/etc/nginx/sites-enabled/default

e altere o 80 na seguinte linha:

listen 80;

depois reinicie:

sudo service nginx restart

20

Siga isto: Abra seu arquivo de configuração

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

Mude o número da porta na qual você está ouvindo;

listen       81;
server_name  localhost;

Adicionar uma regra ao iptables

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

Reinicie as tabelas IP

 service iptables restart;

Reinicie o servidor nginx

service nginx restart

Acesse os arquivos do servidor nginx na porta 81


1
Meu problema foi resolvido usando esse método, que era quase parecido com você.
Sinshiva

FYI: O nome do arquivo correto para nginx sob janelas seria conf \ nginx.conf
Johnny Bigoode

Não importa qual é o nome do arquivo conf, pois todo o diretório conf é originado.
precisa saber é o seguinte

3

Se você estiver no Windows, as configurações do servidor relacionadas à porta abaixo estão presentes no arquivo nginx.conf na pasta <nginx installation path> / conf .

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

Mude o número da porta e reinicie a instância.


1

Se você estiver enfrentando esse problema ao usar o Docker, certifique-se de mapear os números de porta corretos. Se você mapear a porta 81:80 ao executar o docker (ou através do docker-compose.yml), seu nginx deverá escutar na porta 80 e não 81, porque o docker já faz o mapeamento.

Eu mesmo passei algum tempo com esse problema, então espero que ajude a futuros googlers.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.