Impossible de connecter Discourse et WordPress

I’m facing an issue while connecting Discourse to WordPress using the Discourse Plugin. I’m running Discourse on a Digital Ocean droplet. The setup was performed exactly as mentioned here (discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub). The droplet itself sits behind CloudFlare and HTTPS was setup using Let’s Encrypt (using Set up HTTPS support with Let's Encrypt). The WordPress site is deployed on SiteGround, also behind CloudFlare.

When I add the forum’s root address, API key and administrator username in the plugin settings, in WordPress’ console, it still keeps saying “You’re not connected to Discourse”. Upon further investigating I’ve found that this particular request /site.json%20?api_key=[FILTERED]&api_username=<username> is returning 403 Forbidden even with a fresh, valid API Key and a valid administrator username.

The request to site.json is checking that an API request can be made with the values supplied for the API Key and Publishing Username that are set on WordPress. If you make the request with curl from your local computer, is it working for you? For example, this request with $api_key set to your API key:

curl -X GET 'https://forum.example.com/site.json?api_key=$api_key&api_username=system'

If this is woking for you, you could try installing the WordPress Health Check plugin and looking at the Secure communication row on the Site Status tab to see if it’s finding any issues with communicating with external services using secure connections (SSL.)

This curl command works perfectly fine

curl -X GET "https://community.worldbrain.io/site.json%20\?api_key\=blabla\&api_username\=bla"

Health Check mentions Your WordPress install can communicate securely with other services.

Here is what I’m seeing in HTTP API Calls section

Of course the forum itself is working so it’s pretty bizarre to see Could not resolve host

Can I ask how have you installed SSL on your discourse? Is it a generic cloudflare certificate or something?

Edit:
Indeed it’s cloudflare https://www.whynopadlock.com/results/df748a55-67d9-4477-9502-c618b69cb38c

And I’m assuming you’re running their “Flexible” SSL mode. This explains a lot about why the calls are messed up.

J’ai eu la même erreur. Aidez-moi, s’il vous plaît !

Je l’ai fait et j’ai obtenu ceci :

curl -I GET 'https://forum.fususu.com/users/mrsusu.json?api_key=[secretapi]&api_username=mrsusu'

HTTP/1.1 403 Forbidden
Server: CloudFront
Date: Sat, 29 Jun 2019 19:00:27 GMT
Content-Type: text/html
Content-Length: 556
Connection: keep-alive
X-Cache: Error from cloudfront
Via: 1.1 dfb4b390f0fb83a73bab72d387a3e1dc.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: NRT20-C3
X-Amz-Cf-Id: qO_fq0M_GX8wUuqJFCpBDXL6dlJDkKVWJ-BKOSD6qfegOqdNr_837g==

HTTP/1.1 200 OK
Date: Sat, 29 Jun 2019 19:00:28 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Set-Cookie: __cfduid=de8f93857163fcf3bfca002a5af11f38c1561834828; expires=Sun, 28-Jun-20 19:00:28 GMT; path=/; domain=.fususu.com; HttpOnly; Secure
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
X-Discourse-Username: mrsusu
X-Discourse-Route: users/show
Cache-Control: no-cache, no-store
X-Request-Id: 2a4e74b8-3be0-47cf-81e9-fc5682e678c5
Set-Cookie: __profilin=p%3Dt%2Ca%3Dee922625e907ef0b48cfd16cc80c816b%7C20b0d8cc0a038e5816c59c085fca59e5; path=/; secure; HttpOnly

X-Runtime: 0.114832
Strict-Transport-Security: max-age=31536000
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 4eea24bb28432e07-NRT

Mon site WordPress fususu.com est configuré avec SSL flexible (Cloudflare),
avec une règle de page pour le forum forum.fususu.com - SSL complet (Cloudflare).

Avez-vous réussi à faire fonctionner cela ?

Pas encore… J’ai abandonné temporairement ^^!

Avez-vous réussi à faire fonctionner cela ? J’ai la même configuration (Discourse sur Digital Ocean, WordPress sur Siteground, tous deux derrière Cloudflare) et la même erreur. Curl fonctionne sans problème depuis ma machine locale.

Avez-vous des conseils ?

Comment est configuré votre SSL côté Cloudflare ? Utilisez-vous l’optimisation des performances de Cloudflare sur Discourse ?

Vous devriez vraiment configurer le SSL de Cloudflare en mode « Full » et non en mode « Flexible ».
Si l’optimisation des performances de Cloudflare est activée sur Discourse, désactivez-la en créant une règle de page.

Si cela ne résout pas le problème, partagez votre domaine Discourse.

L’URL est https://discuss.guidery.com

Les performances et la sécurité sont désactivées pour le sous-domaine « discuss » via une règle de page.
Le certificat SSL est configuré sur « Full (Strict) ».

Le message d’erreur que je rencontre est « cURL error 6: Could not resolve host: discuss.guidery.com », signalé par le plugin WP Query Monitor.

L’exécution de la même commande cURL depuis ma machine locale fonctionne sans problème.

Une règle de pare-feu bloque-t-elle les connexions côté WordPress ?

Lorsque je me connecte en SSH au serveur partagé (hébergé par SiteGround) et que j’exécute manuellement une commande curl pour interroger mon installation Discourse, je reçois le même message d’erreur ;

“curl: (6)” Could not resolve host: discuss.guidery.com".

J’ai même créé un nouveau site WordPress, en utilisant un nouveau domaine (bien que sur le même serveur SiteGround) sans que Cloudflare gère le DNS, et j’ai reçu le même message d’erreur.

D’autres idées ?

Peut-être contacter SiteGround s’ils bloquent l’adresse IP de votre serveur pour une raison quelconque ?

Résolu. C’était l’un de ces cas ennuyeux où ça a « simplement commencé à fonctionner » sans qu’une solution claire ne soit identifiée. Je vais supposer qu’il s’agissait d’un problème de propagation DNS et que, pour une raison quelconque, le résolveur DNS de Siteground était lent.

Si quelqu’un d’autre rencontre ce problème, ma seule suggestion est d’attendre 48 heures et de réessayer. :-/

Un autre utilisateur ayant rencontré un problème similaire a contacté Siteground. Ils ont pu résoudre le problème. Ce post contient les détails sur la façon dont Siteground a corrigé le problème : [PAID] Fix cURL error 6 in Discourse WP Plugin - #4 by lucas.bagatini.