por que o nginx precisa ser reiniciado?

3

O Ubuntu 16.04 inicia o nginx na inicialização. Está configurado para fazer proxy de vários sites de desenvolvimento no localhost. Esses sites não estão sendo executados quando o nginx é iniciado pela primeira vez.

Se eu iniciar os sites e navegar para https://dev.mysite.com (configurado em etc / hosts), o navegador informará que a conexão foi recusada. Então eu reinicio o nginx e eles se conectam. Por que recusou a primeira vez?

☀  ps aux | grep nginx
root      1805  0.0  0.0 129336  2348 ?        Ss   Sep22   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
... other processes

☔  sudo /usr/sbin/nginx -T
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# configuration file /etc/nginx/nginx.conf:
user www-data;
worker_processes auto;
pid /run/nginx.pid;

... details

server {
    listen 80;
    return 307 https://$http_host$request_uri;
}


# Map hosts -> meteor apps.

map $http_host $backend {
  site1-dev.site.io    http://127.0.0.1:3006;
  site2-dev.site.io    http://127.0.0.1:3000;
  site3-dev.site.io    http://127.0.0.1:3010;
  site4-dev.site.io    http://127.0.0.1:3012;
  site5-dev.site.io    http://127.0.0.1:3014;
}

# Proxy web-socket connections
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

# Serve HTTPS content
server {
    listen 443 ssl http2;
    server_name *.site.io; # this domain must match Common Name (CN) in the SSL certificate

    ssl_certificate /etc/ssl/site.crt;
    ssl_certificate_key /etc/ssl/site.key;

    # performance enhancement for SSL
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 5m;

    # safety enhancement to SSL: make sure we actually use a safe cipher
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   # don’t use SSLv3 ref: POODLE

    # Forward secrecy
    ssl_dhparam /etc/ssl/dhparam.pem;

    add_header Strict-Transport-Security "max-age=31536000;";

    # pass all requests to Node
    location / {
        proxy_pass $backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade; # allow websockets
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header X-Forwarded-For $remote_addr; # preserve client IP
        add_header Cache-Control no-cache;  
    }
}

Fácil, mas meu navegador não se conecta a eles, a menos que eu reinicie o nginx:

☀  sudo service nginx start
☔  sudo /usr/sbin/nginx -T
... Same output, but now browser can connect

É um grande negócio? Não. É apenas um passo extra e eu não entendo o porquê. Eu posso matar / reiniciar os sites, e nunca preciso reiniciar o nginx após a primeira vez.

Por que o nginx inicia e precisa ser reiniciado?

Atualização:

Então, o computador inicializa, faz login e, em seguida, a hora do trabalho: ☔ sudo netstat -tulpen|grep nginx (no output) ☔ ps aux | grep nginx root 1843 0.0 0.0 129336 2320 ? Ss 08:53 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; (workers follow) ☔ sudo /usr/sbin/nginx -T
(no output)

Em seguida, reinicie o sudo service nginx restart : ☀ sudo netstat -tulpen|grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 0 167492 15135/nginx -g daem tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 0 167493 15135/nginx -g daem

Eu olhei para isso , mas não vejo os erros de "bind" nos logs.

    
por Michael Cole 23.09.2016 / 14:53

0 respostas

Tags