Обратный прокси-сервер Apache

Из вопроса не очень понятно, чего именно вы хотите добиться

Если вы пытаетесь вывести десятичные числа, я бы написал

printf("%013d",a);

0-It Left -дополняет число нулями вместо пробелов

Если вы пытаетесь напечатать символы, я бы написал

printf("%*s",13,"string which needs to be printed")

Здесь мы указываем длину символов, которые должны быть напечатаны как целочисленный аргумент для printf (), *заменяется как переданный аргумент

0
31.05.2021, 09:21
1 ответ

У вас должно быть два виртуальных хоста на обратном прокси-сервере. Я бы рекомендовал удалить глобальные директивы proxypass на обратном прокси и указать их для каждого виртуального хоста.

Виртуальный хост на порту 80 должен перенаправляться на порт 443 того же хоста (areverseproxy.example.com )так же, как вы сделали это на внутреннем сервере. Тем не менее, никто больше не должен входить в порт 80 на бэкэнде, если вы правильно настроите обратный прокси-сервер, если только бэкэнд не доступен через Интернет.

Виртуальный хост на порту 443 должен иметь конфигурацию обратного прокси.

На обратном прокси должно быть что-то вроде этого:

<VirtualHost *:80>                                                      
    ServerName areverseproxy.example.com                                     
    ServerAlias areverseproxy                                                
    Redirect permanent / https://192.168.56.71                          
    ErrorLog "/var/log/httpd/areverseproxy.example.com-error_log"            
    CustomLog "/var/log/httpd/areverseproxy.example.com-access_log" common   
</VirtualHost>

<VirtualHost *:443>
    ServerName areverseproxy.example.com   
    ServerAlias areverseproxy                                                

    ErrorLog "/var/log/httpsd/areverseproxy.example.com-error_log"            
    CustomLog "/var/log/httpsd/areverseproxy.example.com-access_log" common   

    SSLEngine on
    SSLCertificateKeyFile conf/ssl.key/areverseproxy.example.com.key
    SSLCertificateFile conf/ssl.crt/areverseproxy.example.com.crt

    SSLProxyEngine on
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerExpire off
    SSLProxyCheckPeerName off

    ProxyRequests off
    ProxyPreserveHost on
    ProxyPass / https://192.168.56.70:443/
    ProxyPassReverse / https://192.168.56.70:443/
</VirtualHost>

Вероятно, у вас нет действительного сертификата HTTPS на внутреннем хосте. Поэтому вам нужны директивы SSLProxyCheck*. Если на бэкенде есть действительные сертификаты с именами, то директивы SSLProxyCheck*можно удалить, но в этом случае директивы ProxyPassи ProxyPassReverseдолжны указывать не на IP-номер, как в примере, а на имя хоста из сертификат.

Вам также может не понадобиться HTTPS между proxyreverse и серверной частью, если они находятся в одной и той же защищенной сети. Если это не так, сохраните HTTPS между обратным прокси-сервером и серверной частью для защиты трафика.

Помните, что клиенты будут взаимодействовать только с обратным прокси-сервером, поэтому важно, чтобы у вас были правильные сертификаты HTTPS для обратного прокси-сервера, а не для серверной части.

0
28.07.2021, 11:28

Теги

Похожие вопросы