ProxyPass apache https到节点服务器

时间:2016-01-18 22:24:27

标签: node.js apache reverse-proxy mod-proxy http-proxy

我正在尝试将apache服务器作为我的节点服务器的网关 我的apache将服务于静态页面,节点将充当rest api服务器 节点和apache都位于同一台服务器上,ubuntu 64bit ec2。

我已经尝试为https执行此操作并失败,后来我尝试打开代理传递的http端口并且它有效(我已将节点更改为http以使其工作)

我的最后一招将是将节点转换为Web服务器,但我希望保持简单,因为它很快就会重构并使用流星。

我会感激任何建议

这是我对apache的配置

<VirtualHost *:443>

    ServerName secure.mysite.co.il
    ServerAdmin admin@mysite.com
    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 admin@mysite.com
    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>

2 个答案:

答案 0 :(得分:6)

需要声明SSLProxyEngine On以启用反向代理配置的SSL。该指令在此处记录:

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

答案 1 :(得分:1)

以下配置适合我。我使用了端口4433但是这显然是任意的

<VirtualHost _default_:443>
    SSLProxyEngine on

    ServerName example.com
    ServerAlias www.example.com 

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

    ServerAdmin info@example.com
    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>