Caro @Teraterayuki…
Aqui está um exemplo de conjunto de hosts virtuais Apache2 funcionais para um proxy reverso a um socket Unix em um container Discourse:
Porta 80
<VirtualHost *:80>
ServerName mysite.mydomain.com
ServerAdmin webmaster@localhost
ProxyPreserveHost On
#ProxyPass / http://127.0.0.1:8888/
#ProxyPassReverse / http://127.0.0.1:8888/
# Níveis de log disponíveis: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# Também é possível configurar o nível de log para módulos específicos, por exemplo:
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/community_errors.log
CustomLog ${APACHE_LOG_DIR}/community.log combined
# Para a maioria dos arquivos de configuração de conf-available/, que são
# habilitados ou desabilitados em nível global, é possível
# incluir uma linha apenas para um host virtual específico. Por exemplo, a
# seguinte linha habilita a configuração CGI apenas para este host,
# após ter sido desabilitada globalmente com "a2disconf".
#Include conf-available/serve-cgi-bin.conf
ModPagespeed Off
RewriteEngine on
RewriteCond %{SERVER_NAME} =mysite.mydomain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Porta 443
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName mysite.mydomain.com
ServerAdmin webmaster@localhost
#SSLProxyEngine on #habilite isso após configurar o Let's Encrypt no proxy reverso
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (Bytespider|Yandex|Wget|seocompany|CCBot|Cincraw) [NC]
RewriteRule . - [R=403,L]
ProxyPreserveHost On
ProxyRequests Off
RequestHeader set X-Forwarded-Proto expr=%{REQUEST_SCHEME}
RequestHeader set X-Real-IP expr=%{REMOTE_ADDR}
#ProxyPass / http://127.0.0.1:8888/
#ProxyPassReverse / http://127.0.0.1:8888/
ProxyPass / unix:/var/discourse/shared/socket-only/nginx.http.sock|http://localhost/
ProxyPassReverse / unix:/var/discourse/shared/socket-only/nginx.http.sock|http://localhost/
# Níveis de log disponíveis: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# Também é possível configurar o nível de log para módulos específicos, por exemplo:
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/community_errors_ssl.log
#CustomLog ${APACHE_LOG_DIR}/community_ssl.log combined
# Para a maioria dos arquivos de configuração de conf-available/, que são
# habilitados ou desabilitados em nível global, é possível
# incluir uma linha apenas para um host virtual específico. Por exemplo, a
# seguinte linha habilita a configuração CGI apenas para este host,
# após ter sido desabilitada globalmente com "a2disconf".
#Include conf-available/serve-cgi-bin.conf
ModPagespeed Off
SSLCertificateFile /etc/letsencrypt/live/mysite.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mysite.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
@Teraterayuki
Note gentilmente que nesta configuração o proxy usa um socket unix, não um socket web (ws)
Note também que nesta configuração você não precisa adicionar manualmente as informações do Let’s Encrypt. Você pode começar com isto:
Porta 80 Antes de Executar o Certbot
<VirtualHost *:80>
ServerName mysite.mydomain.com
ServerAdmin webmaster@localhost
ProxyPreserveHost On
#ProxyPass / http://127.0.0.1:8888/
#ProxyPassReverse / http://127.0.0.1:8888/
# Níveis de log disponíveis: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# Também é possível configurar o nível de log para módulos específicos, por exemplo:
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/community_errors.log
CustomLog ${APACHE_LOG_DIR}/community.log combined
# Para a maioria dos arquivos de configuração de conf-available/, que são
# habilitados ou desabilitados em nível global, é possível
# incluir uma linha apenas para um host virtual específico. Por exemplo, a
# seguinte linha habilita a configuração CGI apenas para este host,
# após ter sido desabilitada globalmente com "a2disconf".
#Include conf-available/serve-cgi-bin.conf
ModPagespeed Off
</VirtualHost>
Porta 443 Antes de Executar o Certbot
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName mysite.mydomain.com
ServerAdmin webmaster@localhost
#SSLProxyEngine on #habilite isso após configurar o Let's Encrypt no proxy reverso
RewriteEngine On
ProxyPreserveHost On
ProxyRequests Off
RequestHeader set X-Forwarded-Proto expr=%{REQUEST_SCHEME}
RequestHeader set X-Real-IP expr=%{REMOTE_ADDR}
#ProxyPass / http://127.0.0.1:8888/
#ProxyPassReverse / http://127.0.0.1:8888/
ProxyPass / unix:/var/discourse/shared/socket-only/nginx.http.sock|http://localhost/
ProxyPassReverse / unix:/var/discourse/shared/socket-only/nginx.http.sock|http://localhost/
# Níveis de log disponíveis: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# Também é possível configurar o nível de log para módulos específicos, por exemplo:
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/community_errors_ssl.log
#CustomLog ${APACHE_LOG_DIR}/community_ssl.log combined
# Para a maioria dos arquivos de configuração de conf-available/, que são
# habilitados ou desabilitados em nível global, é possível
# incluir uma linha apenas para um host virtual específico. Por exemplo, a
# seguinte linha habilita a configuração CGI apenas para este host,
# após ter sido desabilitada globalmente com "a2disconf".
#Include conf-available/serve-cgi-bin.conf
ModPagespeed Off
</VirtualHost>
</IfModule>
Em seguida, se você executar:
certbot -d mysite.mydomain.com
O amigável certbot cuidará de adicionar o código SSL necessário para você.
Depois que nosso amigo certbot adicionar seu código de configuração e tudo estiver funcionando conforme o esperado, você pode descomentar esta linha:
#SSLProxyEngine on #habilite isso após configurar o Let's Encrypt no proxy reverso
e reiniciar o apache2 novamente.
Espero que isso ajude @Teraterayuki
Cuide-se.
Notas Finais:
- Note gentilmente que não usamos
haproxy em nossas configurações de proxy reverso apache2. O haproxy adiciona uma camada desnecessária de complexidade com quase nenhum benefício tangível (para nós), então executamos o apache2 como proxy reverso “da maneira fácil”. YMMV se você quiser usar haproxy; mas, honestamente, não usamos haproxy (em várias configurações de proxy reverso apache2 em produção) e nunca tivemos problemas com o apache2 como proxy reverso.
- Se você não estiver usando
mod_pagespeed, comente essas linhas. No entanto, se você estiver executando mod_pagespeed, desabilite o mod_pagespeed por host virtual ao fazer proxy reverso para o Discourse.
Tudo de bom… e espero que isso ajude você de alguma pequena maneira.