Звучит как простой вопрос, но я не знаю о конфигурации 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