Estou configurando sites Wordpress e Discourse (auto-hospedados) usando o plug-in WP-Discourse.
Consegui habilitar a autenticação básica HTTP em ambos os sites para mantê-los inacessíveis até que estejam prontos para serem lançados (bloqueando efetivamente o acesso do público em geral, bem como dos motores de busca).
Wordpress (informacional para quem busca realizar algo semelhante)
Criei o arquivo .htpasswd com um usuário e senha correspondente
O plug-in WP-Discourse funciona bem até que a autenticação básica seja habilitada no servidor Discourse.
(Editar) Este é o erro no log do plug-in WP-Discourse no lado do Wordpress: [2025-02-14 18:20:06] connection.INFO: check_connection_status.failed_to_connect {\"error\":\"wpdc_response_error\",\"message\":\"Uma resposta inválida foi retornada do Discourse\",\"http_code\":401,\"http_body\":\"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e401 Autorização Necessária\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e401 Autorização Necessária\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"}
Alguma ideia sobre como excluir APIs de exigir autenticação básica HTTP no Discourse?
Você conseguiu? Não tenho certeza se o Discourse funcionará com autenticação básica; tentei uma vez, mas desisti. Parece ainda mais provável que isso possa quebrar o wp-discourse (ah, e eu estava certo sobre isso!). Se você tivesse sucesso, não estaria escrevendo esta mensagem.
Para sites de staging do Discourse, geralmente apenas configuro “login obrigatório” e isso mantém os motores de busca afastados. Alguém com login ainda pode fazer login, mas geralmente é isso que você quer.
Se for inaceitável que seus sites estejam disponíveis para qualquer pessoa, talvez você deva usar um firewall e limitar o acesso ao seu IP.
Obrigado, essa dica me ajudou a resolver o problema. Aqui está a seção atualizada de autenticação básica do app.yml no meu servidor Discourse (nenhuma alteração foi necessária no servidor Wordpress):
# autenticação básica
after_bundle_exec:
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: "# Allow bypass cache from localhost"
to: |
# Permitir bypass da autenticação básica para o plugin WP-Discourse
geo $authentication {
default "Credenciais que você deve fornecer.";
127.0.0.1 "off";
151.101.3.55/32 "off";
}
# Permitir bypass de cache de localhost
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: "# auth_basic on"
to: "auth_basic $authentication"
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: "# auth_basic_user_file /etc/nginx/htpasswd"
to: "auth_basic_user_file /etc/nginx/htpasswd"
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: "location = /srv/status {"
to: "location = /srv/status {
auth_basic off;"
- file:
path: "/etc/nginx/htpasswd"
contents: |
alfred:$apr1$jSdLuHyZ$faWxYGjnmLd/zRC6UMsRs1
151.101.3.55 é o endereço IP público (exemplo) do meu servidor Wordpress. O WP-Discourse agora relata: