1

У меня есть демон Openfire , работающий по адресу http://192.168.2.33:9090 (без SSL), и я хочу связать его через прокси с именем хоста https://openfire.example.com (у меня есть сертификат SSL).

Как бы я это сделал? Когда я добавляю строку SSL в конфигурацию nginx, она показывает ошибку SSL. Вот мой текущий конфиг без поддержки ssl:

map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

server {
        listen 80;
        server_name openfire.example.com;

    location / {
            proxy_pass http://192.168.2.33:9090;
            proxy_redirect http://192.168.2.33:9090/ $scheme://$host/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            proxy_read_timeout 20d;
            auth_basic "Private Property";
            auth_basic_user_file /etc/nginx/.htpasswd;
        }
}

Эта конфигурация выдает ошибку 502 Bad gateway.

Незначительное изменение (как показано ниже) приводит к ERR_TOO_MANY_REDIRECTS.

server {
    listen *:80;
    listen *:443;
    server_name openfire.example.com;

    ssl                     on;
        ssl_protocols           SSLv3 TLSv1;
        ssl_certificate     /etc/letsencrypt/live/openfire.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/openfire.example.com/privkey.pem;

    location / {
        rewrite ^(.*)$ https://openfire.example.com$1 permanent;
        proxy_pass http://192.168.2.33:9090;
        proxy_redirect http://192.168.2.33:9090/ $scheme://$host/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_read_timeout 20d;
    }
}   

1 ответ1

0

Спасибо @Seth! Я определенно нашел решение.

  1. У вас должен быть установлен SSL-сертификат в веб-консоли на вашем сервере openfire.
  2. Этот сертификат должен быть установлен в следующем nginx conf:

    server {
        listen *:80;
        server_name openfire.example.com;
        proxy_set_header Host openfire.example.com;
        location / {
        rewrite ^(.*)$ https://openfire.example.com$1 permanent;
        }
    }
    
    server {
        listen *:443;
        server_name openfire.example.com;
        proxy_set_header Host openfire.example.com;
    
        #The port used for secured Admin Console access:
        set $openfire_port 9091;
        #IP address for machine running openfire server:
        set $openfire_ip 192.168.2.33;
        ssl     on;
        ssl_protocols     SSLv3 TLSv1;
        ssl_certificate     /etc/letsencrypt/live/openfire.example.com/fullchain.pem;
        ssl_certificate_key     /etc/letsencrypt/live/openfire.example.com/privkey.pem;
    
    location / {
        proxy_pass https://$openfire_ip:$openfire_port;
        }
    }
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .