Unable to connect Discourse and 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.

У меня та же ошибка. Пожалуйста, помогите!

Я выполнил это и получил следующее:

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

Мой сайт на WordPress fususu.com настроен с SSL в режиме Flexible (Cloudflare),
а для страницы форума forum.fususu.com установлено правило с SSL Full (Cloudflare).

Вам удалось это запустить?

Ещё нет… Я временно сдался ^^!

Вам когда-нибудь удавалось это исправить? У меня такая же конфигурация (Discourse на Digital Ocean, WordPress на Siteground, оба за Cloudflare), и та же ошибка. Curl работает без проблем с моего локального компьютера.

Есть какие-то советы?

Как настроен ваш SSL на стороне Cloudflare? Используете ли вы оптимизацию производительности Cloudflare для Discourse?

Вам действительно следует использовать режим «Full» для SSL Cloudflare, а не «Flexible».
Если на Discourse включена оптимизация производительности Cloudflare, отключите её, создав правило для страницы.

Если это не поможет, поделитесь доменом вашего Discourse.

URL: https://discuss.guidery.com

Производительность и безопасность отключены для поддомена «discuss» с помощью правила страницы.
Настройка SSL установлена в режим «Полный (строгий)».

Сообщение об ошибке, которое я вижу: «cURL error 6: Could not resolve host: discuss.guidery.com». Эта ошибка сообщается плагином WP Query Monitor.

Выполнение той же команды cURL с моего локального компьютера проходит без проблем.

Блокирует ли правило брандмауэра соединения на стороне WordPress?

Когда я подключаюсь к общему серверу (который размещен на SiteGround) через SSH и вручную выполняю команду curl для запроса моего установочного файла Discourse, я получаю то же сообщение об ошибке;

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

Я даже создал новый сайт WordPress с использованием нового домена (хотя на том же сервере SiteGround), не используя Cloudflare для управления DNS, и получил то же сообщение об ошибке.

Есть ли какие-либо другие идеи?

Возможно, стоит связаться с SiteGround, если они по какой-то причине блокируют IP-адрес вашего сервера?

Решено. Это был один из тех раздражающих случаев, когда проблема просто «сама собой разрешилась», и точная причина так и не была выявлена. Я предполагаю, что это была задержка в распространении DNS-записей, и по какой-то причине DNS-сервер Siteground работал медленно.

Если кто-то ещё столкнётся с этой проблемой, мой единственный совет — подождать 48 часов и попробовать снова. :-/

Ещё один пользователь с аналогичной проблемой обратился в Siteground. Им удалось решить проблему. В этом посте есть подробности о том, как Siteground это исправил: [PAID] Fix cURL error 6 in Discourse WP Plugin - #4 by lucas.bagatini.