O Nginx escuta em uma porta, responde apenas se estiver definido na porta 80


10

SO: Funtoo. Liguei o NGINX à porta 81 (desejo executá-lo juntamente com meu servidor Apache por um curto período de tempo para facilitar a transição) e ele escuta na porta (se eu apontar para outra porta, usando o wget, recebo "Conexão recusada", mas usando a porta 81 eu fico "conectado") mas nunca serve uma resposta HTML de qualquer tipo!

Ao executar um wget na porta, no host local, recebo:

# wget localhost:81
-2014-04-16 23:56:45- http://localhost:81/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:81... connected.
HTTP request sent, awaiting response...

Em outro computador ...

$ wget 192.168.18.42:81
-2014-04-16 23:57:19- http://192.168.18.42:81/
Connecting to 192.168.18.42:81... connected.
HTTP request sent, awaiting response...

Nada acontece depois disso. Os documentos existem, é o Funtoo nginx.conf normal.

ATUALIZAÇÃO: Consigo ouvir a porta 80, mas ainda me incomoda que não consiga fazê-la funcionar em nenhuma porta ....

netstat -aWn | grep 81 | grep LISTEN
tcp 60 0 0.0.0.0:81 0.0.0.0:* LISTEN

Edit: Arquivos de configuração:

user nginx nginx;
worker_rlimit_nofile 6400;

error_log /var/log/nginx/error_log info;

events {
    worker_connections 1024;
    use epoll;
}

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

    # This causes files with an unknown MIME type to trigger a download action in the browser:
    default_type application/octet-stream;

    log_format main
        '$remote_addr - $remote_user [$time_local] '
        '"$request" $status $bytes_sent '
        '"$http_referer" "$http_user_agent" '
        '"$gzip_ratio"';

    client_max_body_size 64m;

    # Don't follow symlink if the symlink's owner is not the target owner.

    disable_symlinks if_not_owner;
    server_tokens off;
    ignore_invalid_headers on;

    gzip off;
    gzip_vary on;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js image/x-icon image/bmp;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    index index.html;
    include /etc/nginx/sites-enabled/*;
}

Bloco do servidor:

server {
    listen  *:81;
    root    /usr/share/nginx/html;
    location / {
        index   index.html;
    }
}

Você tem um filtro de pacotes ativado ( iptables)? Em caso afirmativo, você se lembrou de permitir a porta 81?
Andreas Wiese

O iptables não está ativado.
precisa saber é o seguinte

2
Então, partes relevantes da sua configuração seriam úteis, eu acho.
Andreas Wiese

Respostas:


5

Experimente o seguinte bloco de servidor:

server {
   listen       81 default_server;
    server_name _;    
    root    /usr/share/nginx/html;
    location / {
        index   index.html;
    }
}

O sublinhado _é um curinga. Além disso, o *:81provável não faz o que você espera, basta usar o número da porta.

Em seguida, teste suas configurações com nginx -t:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reinicie o nginx:

service nginx restart

Teste com netstat:

root@gitlab:~# netstat -napl | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      7903/nginx      
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      2662/unicorn.

Atualizar

Eu instalei o nginx em um sistema de teste. Com o nginx.confarquivo de ações e uma alteração de 1 linha em /etc/nginx/sites-enabled/default, consegui recuperar arquivos da porta 81

cat /etc/nginx/sites-enabled/default
server {

    listen   81;
    server_name localhost;
    root /usr/share/nginx/www;
    index index.html index.htm;


    location / {
        try_files $uri $uri/ /index.html;
    }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        deny all;
    }

}

Saída Netstat:

netstat -napl | grep 81
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      3432/nginx

⇬ Fazer download do arquivo:

$ wget localhost:81

Conteúdo do arquivo:

$ cat index.html
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body bgcolor="white" text="black">
<center><h1>Welcome to nginx!</h1></center>
</body>
</html>

Update2

Porta de teste:

 root@gitlab:# nc -vz localhost 81
 Connection to localhost 81 port [tcp/*] succeeded!
 root@gitlab:# nc -vz localhost 443
 nc: connect to localhost port 443 (tcp) failed: Connection refused

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 9 0 0.0.0.0:81 0.0.0.0:* LISTEN 1026/nginx: master Ainda sem sucesso. Recv-Q está sendo 9 uma dica de algum tipo? Aumenta toda vez que eu tento um wget ou algo assim. O bloco do servidor é exatamente como você prescreveu.
precisa saber é o seguinte

Não tenho certeza do que é Recv-Q. Você tem alguma coisa em / etc / nginx / sites-available?
spuder

1
@TC Por favor, veja minha resposta atualizada.
Spuder

nenhuma alteração no meu status, mesmo após o novo arquivo de configuração. É possível que exista algo bloqueando as portas, não a porta 80? Existe uma maneira de testar isso?
precisa saber é o seguinte

1
TC sim, use nc, consulte atualização
spuder

4

Acontece que o grande problema? O Nginx definiu worker_processes para 0. Adicionei uma linha configurando-a autono topo do meu nginx.conf, e tudo estava bem com o mundo!

Obrigado a todos pelo seu tempo e paciência.


Você só me salvou de desistir após cerca de 1 hora de frustração, aparentemente um dos meus variáveis automatizados usados para templates de configuração Nginx saída de um 0para worker_processes, e eu estava completamente espantado pós-quadruple verificando qualquer outro arquivo de configuração, DNS, anfitriões, etc.
geerlingguy 8/03/16
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.