Сайт не перенаправляет на https

Здравствуйте,

Когда я ввожу, например, “thenameofmywebsite.com” в браузере, он автоматически не перенаправляет на защищённый SSL https.

Где можно изменить это для Discourse? Спасибо.

Discord — это другой продукт, я предполагаю, что вы имеете в виду Discourse.

Как вы настроили SSL? Как был установлен этот экземпляр?

Если вы следовали стандартному руководству, то перенаправление HTTPS работает по умолчанию, что означает, что либо вы установили его другим способом, либо изменили конфигурацию после установки.

Извините, опечатка.

Вот мой файл discourse.conf:

server {

    if ($host = wolcengame.net) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    listen [::]:80;
    server_name wolcengame.net www.wolcengame.net; 
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name wolcengame.net www.wolcengame.net;

Таким образом, существует разница между https://wolcengame.net и www.wolcengame.net. Первая ссылка работает и загружает страницу, однако при клике на вторую она превращается в https://www.wolcengame.net, появляется черный экран, и ничего не загружается.

Я не знаю, в чём проблема и как это исправить.

Удалите эту часть, затем перезапустите nginx, и всё должно работать нормально.

Я не думаю, что что-то изменилось. Проблема всё ещё сохраняется. Есть ещё какие-то идеи?

Эту конфигурацию можно изменить множеством способов.

  1. Настроить перенаправление на HTTPS только для предпочитаемого вами домена.
  2. Настроить перенаправление с версии без www на версию с www (или наоборот).
  3. Убедитесь, что в файле yml указан правильный хостнейм Discourse.

Привет, Бхану.

  1. Для моего домена настроен HTTPS (как вы уже заметили по предоставленным ссылкам на мой сайт).
  2. Настроено перенаправление с www на версию без www, что вы также увидели в предоставленном коде.
  3. Значение DISCOURSE_HOSTNAME в yml-файле указано верно, так как мой сайт работает и доступен.

DISCOURSE_HOSTNAME: wolcengame.net

У меня есть ещё один сайт с такой же конфигурацией, как в моём файле discourse.conf, и подобной проблемы там нет.

Мой вопрос: возможно, что-то в Discourse мешает перенаправлению nginx? Вчера я перепробовал всё, но идеи, как решить эту проблему, закончились.

Это мой второй сайт www.koktailmolotov.com. Как вы можете увидеть, при переходе на сайт он автоматически перенаправляется на формат https://koktailmolotov.com. Настройки конфигурации для него такие же, как и для моего сайта на Discourse.

Это невозможно, так как весь трафик обрабатывается внешним nginx. Я исхожу из того, что вы используете шаблон с сокетами для Discourse, а внешний прокси-сервер nginx обрабатывает весь трафик.

Если вы сможете опубликовать конфигурацию nginx для Discourse, я смогу помочь вам разобраться в проблеме.

Ниже приведена полная конфигурация nginx для файла discourse.conf на сегодняшний день:

server {

listen 80;
listen [::]:80;
server_name www.wolcengame.net;
return 301 $scheme://wolcengame.net$request_uri;

}

server {

listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name wolcengame.net www.wolcengame.net;

ssl on;
ssl_certificate /etc/letsencrypt/live/wolcengame.net/fullchain.pem; # управляется Certbot
ssl_certificate_key /etc/letsencrypt/live/wolcengame.net/privkey.pem; # управляется Certbot
ssl_dhparam /etc/letsencrypt/live/wolcengame.net/dhparams.pem;
include /etc/nginx/snippets/ssl.conf;

http2_idle_timeout 5m; # увеличено с значения по умолчанию 3m

location / {
    proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
    proxy_set_header Host $http_host;
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Real-IP $remote_addr;

}

}

Измените это на

return 301 https://wolcengame.net$request_uri;

{quote=“pr0cesor, пост:9, тема:143707”]
listen 443 ssl http2; listen [::]:443 ssl http2; server_name wolcengame.net www.wolcengame.net;
[/quote]

Удалите www.wolcengame.net из этого

и создайте отдельный блок, например:

listen 443 ssl;
listen [::]:443 ssl;
server_name www.wolcengame.net;
ssl_certificate /etc/letsencrypt/live/wolcengame.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wolcengame.net/privkey.pem; 
return 301 https://wolcengame.net$request_uri;

Чтобы прояснить: это вообще не проблема Discourse.

Discourse может работать только под одним полным доменным именем (FQDN). Проблема в том, что вы настроили два домена и не правильно сконфигурировали перенаправления. Решения обеих этих проблем уже были даны в других темах.

Вы гений, это решило проблему. Большое спасибо.