2016-01-18 7 views
2

Я пытаюсь сделать сервер Apache шлюзом для моего узла-сервера.
Мой apache будет обслуживать статические страницы, и узел будет действовать как сервер api отдыха.
Оба узла и apache находятся на одном сервере, ubuntu 64 бит ec2.ProxyPass apache https на сервер узла

Я попытался сделать это для https и потерпел неудачу, позже я попытался открыть http-порт для прокси-прохода, и он сработал (я изменил узел на http, чтобы это работало).

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

Я ценю любое предложение

Это моя конфигурация для апача

<VirtualHost *:443> 

    ServerName secure.mysite.co.il 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/html 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 

    SSLEngine on 
    SSLCertificateFile /ssl/mysite.crt 
    SSLCertificateKeyFile /ssl/mysite.key 
    SSLCertificateChainFile /ssl/ca-bundle-client.crt 

    ProxyPreserveHost On 
    ProxyRequests Off 
    ProxyPass /echo/test https://127.0.0.1:8001/echo/test 
    ProxyPassReverse /echo/test https://127.0.0.1:8001/echo/test 

преуспевающей HTTP конфигурация

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName mysite.co.il 
    ServerAlias www.mysite.co.il 
    DocumentRoot /var/www/html 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
    ProxyPreserveHost On 
    ProxyRequests Off 
    ProxyPass/http://127.0.0.1:8001/ 
    ProxyPassReverse/http://127.0.0.1:8001/ 
</VirtualHost> 
+0

Настроен ли ваш сервис узла для SSL? –

+0

он обслуживает то же самое ca var server = restify.createServer ({ ключ: fs.readFileSync ('/ ssl/mysite.key'), сертификат: fs.readFileSync ('/ ssl // mysite.crt'), имя: 'mysite-rest', версия: '1.0.0' }); – Tal

+0

Я не понимаю, как Node может иметь порт 8001, настроенный одновременно для https и http-соединений. Вы пробовали напрямую тестировать соединение https с помощью OpenSSL («openssl s_client -connect 127.0.0.1:8001»)? –

ответ

4

SSLProxyEngine На должен быть объявлено, чтобы включить SSL для конфигурации обратного прокси. Эта директива описываемая здесь:

http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslproxyengine

+0

«Обратите внимание, что директива SSLProxyEngine не должна, в общем, не включаться в виртуальный хост, который будет выступать в качестве прямого прокси (с использованием директив или ). SSLProxyEngine не требуется, чтобы включить прокси-сервер для прокси SSL/TLS ». –

+1

BazzaDP, эта инструкция применима к конфигурации« ** forward ** ». Таль использует прокси-сервер« ** обратный ** »(более общий) .., и это требует SSLProxyEngine On –

+0

Вы вернувшись к моим прокси-серверам и проверил мою собственную конфигурацию, но не видел ее, но вижу, что она там, очевидно, проверена неправильно раньше. –

0

Следующая конфигурация работает для меня. Я использовал порт 4433, однако это obviousy произвольного

<VirtualHost _default_:443> 
    SSLProxyEngine on 

    ServerName example.com 
    ServerAlias www.example.com 

    ProxyRequests Off 
    ProxyPreserveHost On 
    ProxyVia Full 
    <Proxy *> 
     Require all granted 
    </Proxy> 

    ServerAdmin [email protected] 
    DocumentRoot /var/www/example.com/public_html 

    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 

    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem 
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem 
    Include /etc/letsencrypt/options-ssl-apache.conf 
    #SSLCertificateChainFile /etc/letsencrypt/live/fullchain1.pem 


    ProxyPass/https://example.com:4433/ 
    ProxyPassReverse/https://example.com:4433/

    <Directory "/var/www/example.com/public_html"> 
     AllowOverride All 
    </Directory>   

</VirtualHost>