NodeJS 代理将apache https传递到节点服务器

w3nuxt5m  于 2022-12-29  发布在  Node.js
关注(0)|答案(3)|浏览(164)

我正在尝试让一个Apache服务器成为我的节点服务器的网关。
我的apache将提供静态页面,节点将充当API服务器。
node和apache都位于同一台服务器ubuntu64bitec2上。
我曾尝试为https这样做,但失败了,后来我尝试为代理传递打开一个http端口,结果成功了(我将节点更改为http以便工作)。
我最后的手段是将节点转到Web服务器,但我希望保持简单,因为它很快就会进行重构并使用meteor。
我将感激任何建议
这是我对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>
hwamh0ep

hwamh0ep1#

需要声明SSLProxyEngine On才能为反向代理配置启用SSL。此指令记录在以下位置:
http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslproxyengine

h9a6wy2h

h9a6wy2h2#

下面的配置对我很有效。我使用了端口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>
58wvjzkj

58wvjzkj3#

这些技术是不兼容或可互换的,也就是说,你不能用JavaScript和PHP,或者HTML和CSS与REACT、NODEJS和WebPack3一起工作。你必须选择一种,可能是两种技术,并解决什么工作作为代码库经常打破和不可靠。你会发现,试图合并更多的软件只会打破你现有的代码。

相关问题