Назад | Перейти на главную страницу

Прокси HTTPS в apache для отдыха API

Звучит как простой вопрос, но я не знаю о конфигурации apache. Любая помощь была бы замечательной.

поскольку Открыть TSDB не будет поддерживать https для отправки данных (через REST API), мы хотим создать прокси https в apache или «Apache Tomcat». Например, на локальном компьютере есть TSDB и Apahce. Apache должен принимать http и https, если я отправлю их на https://<PUBLIC IP>/api/input, он должен направить TSDB в той же машине (Или TSDB может быть в другой машине) с http.

Большая картинка

MY Code<---->https://<PUBLIC IP>/api/input<---- Прокси для ---->http://localhost/api/input

Выше я упомянул Apache Tomcat потому что в основном мы используем Apache Tomcat для других целей, поэтому первым приоритетом является Tomcat (возможно ли это с Tomcat?).

НОТА: Я знаю разницу между Apache и Apache Tomcat: Apache - это веб-сервер http, который обрабатывает только трафик http, tomcat - это контейнер сервлета для обработки запроса (только для Java). В сборке Tomcat есть Apache. (Пожалуйста, поправьте меня, если я ошибаюсь)

В Apache HTTPD в основном это было бы так:

<VirtualHost *:80>
ServerName publicname.example.com
Redirect / https://publicname.example.com/
</VirtualHost>

<VirtualHost *:443>
ServerName publicname.example.com
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.pem
ErrorLog /path/to/logs/publicaname.example.com-ssl-error.log
CustomLog /path/to/logs/publicaname.example.com-ssl.log combined

ProxyPass /api/input http://127.0.0.1:8080/api/input
ProxyPassReverse /api/input http://127.0.0.1:8080/api/input
</VirtualHost>

Примечание: вам понадобится mod_proxy и mod_proxy_http модули загружаются первыми.

Благодаря @ ezra-s я могу отправлять данные. Но пока я делал это, я немного боролся, поэтому просто хочу поделиться некоторой информацией.

1.sudo apt-get install -y libapache2-mod-proxy-html libxml2-dev apache2-prefork-dev libxml2-dev

2. Включение модулей

sudo a2enmod proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_htm ssl

3. сгенерированный самоподписанный сертификат вот руководство

4.Добавлен конфиг в /etc/apache2/sites-enabled/000-default.conf

5.Пытался перезапустить sudo service apache2 restart. Но у меня ошибка

 * Starting web server apache2                                                                                                                  * 
 * The apache2 configtest failed.
Output of config test was:
[Mon Feb 13 02:31:06.772053 2017] [proxy_html:notice] [pid 8060] AH01425: I18n support in mod_proxy_html requires mod_xml2enc. Without it, non-ASCII characters in proxied pages are likely to display incorrectly.
AH00526: Syntax error on line 39 of /etc/apache2/sites-enabled/000-default.conf:
ProxyPass Unable to parse URL
Action 'configtest' failed.
The Apache error log may have more information.

После долгих поисков в Интернете я нашел mod_xml2enc ошибка недоступна. Итак, я построил этот модуль из исходников

sudo apt-get install apache2-prefork-dev libxml2 libxml2-dev
mkdir ~/modbuild/ && cd ~/modbuild/
wget http://apache.webthing.com/svn/apache/filters/mod_xml2enc.c
wget http://apache.webthing.com/svn/apache/filters/mod_xml2enc.h
sudo apxs2 -aic -I/usr/include/libxml2 ./mod_xml2enc.c
cd ~
rm -rfd ~/modbuild/
sudo service apache2 restart
 * Restarting web server apache2                                                                                                               AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
                                                                                                                                        [ OK ]

Спасибо за помощь!

Есть много способов добиться желаемого результата.

Заставьте Tomcat прослушивать 127.0.0.1:8080 и настроить перед ним какой-нибудь интерфейсный сервер. Ваш интерфейсный сервер будет прослушивать *: 80 и *: 443 и перенаправлять все запросы на скрытый Tomcat.

Есть много front-end серверов. Это может быть Apache (как вы предлагали), nginx (который потребляет меньше памяти) или haproxy (который предлагает отличную статистику вместе с почти постоянным объемом памяти).

Одним из возможных фрагментов конфигурации для nginx может быть:

server {
    listen 443 ssl;

    server_name your.hostname.com; 
    access_log  .../access_log main;
    error_log .../error_log;

    ssl_certificate      /.../fullchain.pem;
    ssl_certificate_key  /.../key.pem;

    # some TLS config should be here

    # forward all requests to Tomcat 8080
    location / {
      proxy_pass      http://127.0.0.1:8080/;
      client_max_body_size    128m;  # limit POST size
    }
}

server {
    listen 80;
    server_name your.hostname.com; 

    access_log  /.../80-access_log main;
    error_log /.../80-error_log;

    location / {
        # redirect everython to HTTPS
        return 301 https://$host$request_uri;
    }
}

Для конфигурации генерации TLS рекомендую Генератор конфигурации Mozilla SSL