用于nodejs api的apache2 proxypass

时间:2018-11-18 11:34:24

标签: node.js apache express proxypass

我的这个Apache具有代理服务器通行证配置:

 <IfModule mod_ssl.c>
 <VirtualHost *:443>
    ServerName domain.name.com
    DocumentRoot /var/www/html/

    alias / /var/www/html/wp/

    SSLEngine on
    SSLProxyEngine On
    LogLevel warn

    # DO NOT enable proxy with proxy request until server is secured
    ProxyRequests Off

    <Proxy *>
            Require all granted
    </Proxy>

    <Location "/app/">
            AddDefaultCharset utf-8
            ProxyPassReverse http://127.0.0.1:8888/
            SetEnv force-proxy-request-1.0 1
            SetEnv proxy-nokeepalive 1
    </Location>


    <Directory "/var/www/html">
            Options FollowSymLinks
            AllowOverride none
            Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    SSLCertificateFile /path/fullchain.pem
    SSLCertificateKeyFile /path/privkey.pem
    Include /etc/cert/options-ssl-apache.conf
</VirtualHost>
</IfModule>

我的/ var / www / html / wp中的wp文件正确显示在htts://domain.name.com中

在我的proxypass中有一个节点express(后端)和angularjs(前端)。节点express包含端点

 ...
 router.post('/login', users.Token);
 router.post('/logout',users.logout);

 router.get('/provinces', aux.getProvinces);
 ...

之后,我使用:

 app.use("/api", api);

api 添加到我在nodejs中的所有路由。还必须在我的本地计算机上说,无需apache,即可表达api 工作正常

在我的https://domain.name.com/app中显示了我的angualarjs主页 但所有表达api的路由都会返回403错误。

如果我在nodejs api中对此进行更改:

  app.use("/app", api);

我得到503服务不可用

如果我改变其中一个

   ...
   <Location "/">
        AddDefaultCharset utf-8
   ...

   <Location "/api">
        AddDefaultCharset utf-8
   ...

我收到403禁止错误

我也尝试在apache中添加以下波纹管代理位置:

     <Location "/app/">
            AddDefaultCharset utf-8
            ProxyPassReverse http://127.0.0.1:8888/
            SetEnv force-proxy-request-1.0 1
            SetEnv proxy-nokeepalive 1
    </Location>
    alias /api/ /app/

在我的angularjs前端返回禁止的403,而在后端nodejs却返回404的

问题:

在为我的nodejs api后端提供服务时我做错了什么?

0 个答案:

没有答案