Направьте domain.com/api к определенному порту, используя Apache и обратный прокси - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть приложение Node.js, использующее Express.js, работающее на порту 1399, предлагающее API отдыха для пользователя.Доступ к API можно получить с помощью http://example.com:1399. Я использую Let's Encrypt for SSL.

Проблема в том, что работают только запросы без SSL , так как Let's Encrypt по умолчанию разрешает только HTTPSпорты (такие как порт 443).Использование https://example.com:1399/ (с https) дает мне Ошибка безопасного соединения * Ошибка 1010 * в Firefox.

Чтобы иметь возможность также предлагать SSL на других портах, кроме порта 443, я хотел быдля маршрутизации всех запросов от https://example.com/api до https://example.com:1399/api. Как вы можете сделать это, используя Apache и обратный прокси-сервер?

Я пробовал решение, предложенное в this ответьте, добавив следующее в /etc/apache2/sites-available/000-default-le-ssl.conf:

<Virtual Host *:443>
    ...
    ProxyPass /api/ https://127.0.0.1:1399/api/
    ProxyPassReverse /api/ https://127.0.0.1:1399/api/
</VirtualHost>

Однако при вызове https://example.com/api/ это дает мне Внутренняя ошибка сервера .При вызове с http: // я не получаю ответа и через 10 секунд тайм-аут загрузки завершится.

1 Ответ

0 голосов
/ 23 февраля 2019

Решение:

  1. Добавьте эти две строки в /etc/apache2/sites-available/000-default-le-ssl.conf прямо перед </VirtualHost>:
ProxyPass        "/api"  "http://example.com:1399/"
ProxyPassReverse "/api"  "http://example.com:1399/"
Включить mod_proxy и mod_proxy_http :
sudo a2enmod proxy
sudo a2enmod proxy_http
Перезапустите apache2:
sudo /etc/init.d/apache2 restart
...