nginx como proxy SSL reverso (Apache + Varnish) pula sua própria configuração

1

Eu tenho uma nova instalação do Ubuntu 14.04 com as seguintes etapas:

  • Apache2 2.4.7
  • MariaDB última versão estável
  • PHP 7.0.9 (e vários módulos)
  • O Apache foi configurado para funcionar com o PHP7-FPM *
  • mod_rpaf trabalhando com o Apache2 **
  • PHPMyAdmin 4.6.3 funcionando corretamente com o PHP7.0.9.
  • WordPress 4.6 ***
  • Verniz 4.0
  • NginX 1.10.1 com certificado ssl em / etc / nginx / ssl

  • e ** - > O problema acontece antes e depois dessas configurações *** - > O wp-config.php possui código para forçar o login SSL e o administrador SSL. Ambos funcionam bem com apenas Apache / Varnish. Fiz um certificado ssl para o Apache e tudo funcionou bem se o Apache definisse para escutar a porta 443.

Este é o meu /etc/apache2/ports.conf:

#NameVirtualHost 192.168.1.86
ServerName 192.168.1.86
Listen 8080

#<IfModule ssl_module>
#   Listen 443
#</IfModule>

#<IfModule mod_gnutls.c>
#   Listen 443
#</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Este é o meu /etc/apache2/sites-available/000-default.conf:

<IfModule mod_fastcgi.c>

    AddHandler php7-fcgi-www-data .php
    Action php7-fcgi-www-data /php7-fcgi-www-data
    Alias /php7-fcgi-www-data /usr/lib/cgi-bin/php7-fcgi-www-data
    FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi-www-data -socket /run/php/php7.0-fpm.www-data.sock -pass-header Authorization

    <Directory "/usr/lib/cgi-bin">
        Require all granted
    </Directory>

    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
        SetHandler php7-fcgi-www-data
    </FilesMatch>

</IfModule>

<VirtualHost *:8080>

    ServerAdmin [email protected]
    DocumentRoot /var/www/html
    ServerName 192.168.1.86

    <Directory /var/www/html/>
      AllowOverride All
    </Directory>

    Alias /phpmyadmin "/usr/share/phpmyadmin/"
    <Directory "/usr/share/phpmyadmin/">
      Order allow,deny
      Allow from all
      Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Esta é a parte 'backend' no meu /etc/varnish/default.vcl:

backend default {
    .host = "192.168.1.86";
    .port = "8080";
}

Isso está no meu / etc / default / verniz:

DAEMON_OPTS="-a :80 \
         -T localhost:6082 \
         -f /etc/varnish/default.vcl \
         -S /etc/varnish/secret \
         -s malloc,256m"

Este é o meu / etc / nginx / sites-available / default:

server {
    listen 443 ssl;

    server_name     192.168.1.86;
    ssl_certificate     /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

    location / {
        proxy_pass http://192.168.1.86:80;

        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Port 443;
        proxy_set_header Host $host;
    }
}
  • NENHUM traço de porta 80 em /etc/nginx/nginx.conf.
  • /etc/apache2/sites-available/000-default.conf corresponde ao que está habilitado para sites
  • / etc / nginx / sites-available / default corresponde ao que está habilitado para sites
  • Tentei muita combinação em / etc / nginx / sites-available / default com o 'listen 443', como:

    escute 443 ssl default_server; listen [::]: 443 ssl default_server ipv6only = on;

O PROBLEMA

link (ou link , etc) mostra "Não é possível conectar", não importa o que eu faça em arquivos conf nginx. Tentei MUITAS coisas.

O Nginx parece estar ok (sintaxe, configuração) mas, quando ativado, não funciona. O log de erros diz:

2016/08/23 14:02:07 [emerg] 10857#10857: bind() to 0.0.0.0:80 failed (98: Address already in use)
2016/08/23 14:02:07 [emerg] 10857#10857: bind() to 0.0.0.0:80 failed (98: Address already in use)
2016/08/23 14:02:07 [emerg] 10857#10857: bind() to 0.0.0.0:80 failed (98: Address already in use)
2016/08/23 14:02:07 [emerg] 10857#10857: bind() to 0.0.0.0:80 failed (98: Address already in use)
2016/08/23 14:02:07 [emerg] 10857#10857: bind() to 0.0.0.0:80 failed (98: Address already in use)
2016/08/23 14:02:07 [emerg] 10857#10857: still could not bind()

Por alguma razão, o nginx está tentando pegar a porta 80, mas supostamente está usando 443.

Eu vi outras pessoas tendo o mesmo problema exato, por exemplo: nginx tentando ligar na porta errada

Só para ficar claro: Eu sei que existe um servidor usando a porta 80. O que eu NÃO sei é por que o nginx está tentando usar a porta 80 quando deveria estar usando o 443.

Qualquer um pode ajudar, por favor? Agradecemos antecipadamente

    
por Karls 23.08.2016 / 15:09

1 resposta

0

Você pode tentar algumas coisas sem mexer com o default file config

a) Crie seu próprio arquivo de configuração em /etc/nginx/sites-available e, em seguida, habilite-o com um link flexível em /etc/nginx/sites-enabled

b) desative default site excluindo o link default em /etc/nginx/sites-enabled ou simplesmente altere a porta do default config para que nginx ouça na porta 81 (por exemplo)

Portanto, caso o Nginx insista em escutar em http ou qualquer outra coisa que esteja causando esse comportamento, ele não pegará a porta 80 e não permitirá que o Varnish a assista.

Alternativamente, atualize para o Ubuntu 16.04 LTS, o que lhe daria uma atualização muito atualizada de tudo, incluindo o Openssl v1.0.2 +, para que você possa ativar o suporte a HTTP / 2.

    
por 01.09.2016 / 05:48