AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 970180
Accepted
James Newton
James Newton
Asked: 2017-10-29 02:15:38 +0800 CST2017-10-29 02:15:38 +0800 CST 2017-10-29 02:15:38 +0800 CST

Obtenha o Apache2 em execução com nginx como proxy reverso

  • 772

Meu objetivo é fornecer um serviço de e-mail seguro a partir de um novo servidor Ubuntu 16.04. Para fazer isso, quero configurar o Apache2 com o nginx em execução como seu proxy reverso.

Meu problema imediato é que o Apache falha ao iniciar, alegando que não há certificado SSL atribuído (consulte a saída do Terminal no final desta pergunta), embora eu não esteja (ainda) tentando usar HTTPS.

Minhas perguntas:

  • Se o Apache estiver sendo executado em uma porta local, não é suficiente que o nginx saiba sobre quaisquer certificados SSL?
  • O que preciso fazer para que o Apache comece a escutar em um endereço local?

Aqui está o meu entendimento do que eu preciso fazer. Eu ficaria grato se você pudesse apontar onde meu entendimento está errado.

  • Instale nginx e Apache2
  • Crie um bloco de servidor nginx para:
    • Ouça nas portas 80 (e 443)
    • (Redirecione o tráfego da porta 80 para a porta 443)
    • (Lidar com uma certificação SSL)
    • Encaminhe quaisquer solicitações de um arquivo PHP para o Apache em 127.0.0.1:8080
  • Configure o Apache para:
    • Ouça apenas na porta 8080, não na porta 443
    • Permanecer ignorante de qualquer certificação SSL

Eu gosto de lidar com um problema de cada vez, então estou deixando de lado a questão dos certificados SSL e tentando fazer o Apache rodar com nginx como seu proxy reverso apenas na porta 80.


Aqui estão os arquivos de configuração que tenho:

nginx

$ sudo nano /etc/nginx/sites-available/webmail

server {
  listen   80;

  root /var/www/webmail/web;
  index index.php index.html index.htm;

  server_name webmail.mydomain.com;

  # Look for...
  # * the exact path
  # * a default (index.*) file, considering the path to be a directory
  # ... and if that fails:
  # * get the index.php script at the root to deal with the request

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

  # If the chosen path leads to a PHP fie:
  # * forward the request to Apache running at 127.0.0.1:8080
  # * after having modified certain headers

  location ~ \.php$ {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:8080;
  }

  # If there are any Apache HT files in the chosen directory
  # ignore any direct requests for them

  location ~ /\.ht {
    deny all;
  }
}

Apache2

$ sudo nano /etc/apache2/sites-available/webmail.conf 

<VirtualHost 127.0.0.1:8080>
        ServerName webmail.mydomain.com
        ServerAdmin [email protected]
        DocumentRoot /var/www/webmail/web
        <Directory "/var/www/webmail/web">
            Options FollowSymLinks
            AllowOverride All
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

portas Apache2

$ sudo nano /etc/apache2/ports.conf

Listen 127.0.0.1:8080

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

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

Observe que não estou pedindo explicitamente ao Apache para escutar na porta 443. Existe outro lugar em algum outro arquivo de configuração que está dizendo ao Apache para escutar na porta 443?


Aqui estão meus arquivos PHP e HTML de espaço reservado, em seus lugares esperados:

index.php

$ sudo nano /var/www/webmail/web/index.php

<?php
  echo "PHP from /var/www/webmail/web/index.php\n";
?>

index.html

$ sudo nano /var/www/webmail/web/index.html

<html>
  HTML from /var/www/webmail/web/index.html
</html>

No navegador, uma solicitação para http://webmail.mydomain.com/index.html é bem- sucedida como esperado, mas uma solicitação para http://webmail.mydomain.com/index.php resulta no download do arquivo, não na execução .


Aqui está o que acontece quando tento iniciar o Apache2:

$ sudo /etc/init.d/apache2 restart
[ ok ] Restarting apache2 (via systemctl): apache2.service.

$ sudo service apache2 status
* apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           `-apache2-systemd.conf
   Active: inactive (dead) since <Time>; 3s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 16059 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 16043 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)

systemd[1]: Starting LSB: Apache2 web server...
apache2[16043]:  * Starting Apache httpd web server apache2
apache2[16043]: Action 'start' failed.
apache2[16043]: The Apache error log may have more information.
apache2[16043]:  *
apache2[16059]:  * Stopping Apache httpd web server apache2
apache2[16059]:  *
systemd[1]: Started LSB: Apache2 web server.

Aqui está o conteúdo do error.log:

$ sudo nano /var/log/apache2/error.log

[ssl:emerg] [pid 15943] AH02572: Failed to configure at least one certificate and key for myhostname.hostingservice.com:443
[ssl:emerg] [pid 15943] SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned
[ssl:emerg] [pid 15943] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/apache2/error.log for more information

(Isso está em var/log/apache2/error.log e não há mais informações.)

O que eu tenho perdido?


NOTA: O objetivo principal deste servidor é fornecer um aplicativo Meteor. Eu escolhi fazer isso usando Phusion Passenger e Nginx. Além do serviço de e-mail, o Apache também será usado para entregar um site WordPress.

apache2
  • 1 1 respostas
  • 1107 Views

1 respostas

  • Voted
  1. Best Answer
    James Newton
    2017-11-02T11:49:33+08:002017-11-02T11:49:33+08:00

    Eu tenho que trabalhar agora. Eu havia esquecido de remover /etc/apache2/sites-disabled/default-ssl.conf, então o Apache estava tentando executar um site seguro que não era necessário.

    Posteriormente, usei sudo certbot --nginxpara obter um certificado para Nginx e agora tudo está funcionando com segurança.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve