使用apache将特定于HTTPS的请求重定向到特定端口

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (305)

我有一个问题是将一些请求重定向到另一个端口。这是我的配置:

  • 我有一个像XXXX.ddns.net这样的公共域名
  • 我有一个带有apache的Rapsbian服务器,我的/ var / www文件夹中的文件正确提供(有角度的网站)
  • 在同一个Raspbian服务器上,在3000端口上运行了一个REST服务器
  • 这是使用SSL运行的HTTPS(letsencrypt)

我希望将XXXX.ddns.net/api/*的所有请求重定向到3000端口。

我更改.htaccess文件,重写规则似乎适用于本地,但我不能让它在我的网站上工作。API请求实现错误500。

这是我当前的.htaccess文件:

RewriteEngine On
RewriteRule ^api/(.*)      https://localhost:3000/api/$1 [QSA]
# not sure if it should be http or https in the rule but nothing works
#RewriteRule ^api/(.*)      http://localhost:3000/api/$1 [QSA]

# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]

# If the requested pattern is file and file doesn't exist, send 404
RewriteCond %{REQUEST_URI} ^(\/[a-z_\-\s0-9\.]+)+\.[a-zA-Z]{2,4}$
RewriteRule ^ - [L,R=404]

这是我目前的000-default-le-ssl.conf文件(在/ etc / apache2 / sites-available中):

<IfModule mod_ssl.c>
<VirtualHost *:443>

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

ServerName XXXX.ddns.net
SSLCertificateFile /etc/letsencrypt/live/XXXX.ddns.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/XXXX.ddns.net/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
<Location /api>
        ProxyPass http://127.0.0.1:3000/api
        ProxyPassReverse http://127.0.0.1:3000/api
</Location>

</VirtualHost>
</IfModule>

如果有人能帮助我实现它...谢谢!

提问于
用户回答回答于

谢谢你的帮助。我真的不知道怎么样但它现在有效!我不完全记得我做了什么,但最后一个是修改我的000-default-le-ssl.conf文件,如下所示:

SSLProxyEngine On
SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
<Location /api>
    ProxyPass http://127.0.0.1:3000/api/
    ProxyPassReverse http://127.0.0.1:3000/api/
    ProxyPass https://127.0.0.1:3000/api/
    ProxyPassReverse https://127.0.0.1:3000/api/
</Location>

扫码关注云+社区

领取腾讯云代金券