Apache 2.4将https重定向到另一个端口

Apache 2.4将https重定向到另一个端口,apache,httpd.conf,apache2.4,Apache,Httpd.conf,Apache2.4,我是一个新手,但我已经为此奋斗了一段时间,我肯定是做错了什么 我们使用Apache2.4作为内部网页的前端 当我尝试将请求转发到80以外的端口时,它会发疯并被重定向多次 httpd.conf: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule rewrite_module modules/mod_rewrite.so &l

我是一个新手,但我已经为此奋斗了一段时间,我肯定是做错了什么

我们使用Apache2.4作为内部网页的前端

当我尝试将请求转发到80以外的端口时,它会发疯并被重定向多次

httpd.conf:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so

<VirtualHost *:80>
    RewriteEngine on
    RewriteCond %{HTTPS} !on
    RewriteRule ^(.*) %{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile "C:/Program Files/Apache24/conf/ssl/company.crt"
    SSLCertificateKeyFile "C:/Program Files/Apache24/conf/ssl/company.key"
    SSLCertificateChainFile "C:/Program Files/Apache24/conf/ssl/CA.pem"

    # Proxy configuration
    ProxyPreserveHost On
    ProxyRequests Off
    ServerName demos.company.com

    ProxyPass /WebApplicationOK http://10.0.0.160/WebApplicationOK
    ProxyPassReverse /WebApplicationOK http://10.0.0.160/WebApplicationOK
    ProxyPass /WebApplicationFailRoute http://10.0.0.125:8000/WebApplicationFail
    ProxyPassReverse /WebApplicationFailRoute http://10.0.0.125:8000/WebApplicationFail
</VirtualHost>
LoadModule proxy\u modules/mod\u proxy.so
LoadModule proxy\u http\u module modules/mod\u proxy\u http.so
LoadModule rewrite_module modules/mod_rewrite.so
重新启动发动机
重写cond%{HTTPS}!在…上
重写规则^(.*)%{HTTP_HOST}%{REQUEST_URI}[R=301,L]
斯伦金安
SSLCertificateFile“C:/Program Files/Apache24/conf/ssl/company.crt”
SSLCertificateKeyFile“C:/Program Files/Apache24/conf/ssl/company.key”
SSLCertificateChainFile“C:/Program Files/Apache24/conf/ssl/CA.pem”
#代理配置
代理主机
代理请求关闭
ServerName demos.company.com
ProxyPass/WebApplicationOKhttp://10.0.0.160/WebApplicationOK
ProxyPassReverse/WebApplicationOKhttp://10.0.0.160/WebApplicationOK
ProxyPass/WebApplicationFailRoutehttp://10.0.0.125:8000/WebApplicationFail
ProxyPassReverse/WebApplicationFailRoutehttp://10.0.0.125:8000/WebApplicationFail
我们需要维护每个http请求到https的重定向

如果可能,我们需要Internet地址“显示intranet web”


提前感谢。

这就是为琐碎任务添加复杂指令的问题所在

您有一个使用端口80的Virtualhost,为什么还要检查SSL?它将接收的所有内容都不是SSL

此外,rewrite指令缺少该方案

所以只要:

RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [R,L]
如果您不需要使用变量,对于变量主机名,我会更简单:

Redirect / https://whateverhost.example.com/

httpd的成功法则:总是选择最简单的选项。

我知道了,其实很简单。我想,您只需将这些行从下面添加到ssl.conf重定向

<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName XXXX.ddns.net
    # These are your SSL settings; your responsibility
    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

    # Your document root; where the JavaScript application lives
    DocumentRoot /var/www/html
    <Directory /var/www/html/ >
        Options -Indexes +FollowSymLinks -MultiViews
        AllowOverride None
        Order Allow,Deny 
        Allow From All
    </Directory>

    # Reverse proxy settings for API (custom redirection https to specific port)
    ProxyRequests     Off
    ProxyPreserveHost On
    <Location /api >
        ProxyPass        http://127.0.0.1:3000/api
        ProxyPassReverse http://127.0.0.1:3000/api
    </Location>
</VirtualHost>

服务器管理员webmaster@localhost
ServerName XXXX.ddns.net
#这些是您的SSL设置;你的责任
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
#您的文档根目录;JavaScript应用程序所在的位置
DocumentRoot/var/www/html
选项-索引+后续符号链接-多视图
不允许超限
命令允许,拒绝
通融
#API的反向代理设置(自定义重定向https到特定端口)
代理请求关闭
代理主机
ProxyPasshttp://127.0.0.1:3000/api
ProxyPassReversehttp://127.0.0.1:3000/api

在您的应用程序中,您可能希望重定向到
https://%{HTTP\u HOST}%{REQUEST\u URI}
重新启动httpd服务时是否有任何错误?apache和重定向服务器是否在同一台机器上?不,我在启动apache时没有任何错误。Apache2.4机器重定向到其他机器(通常使用Tomcat或其他Java应用服务器)中的Web,感谢您的回答。从http到https的重定向已在工作。我想要的是,当您向地址“”发出请求时,将显示未在Internet上发布的网页“”。结果是重定向太多。问题是在端口中,当我重定向到标准端口时,它工作正常。“”正确地显示了“”。抱歉,我没有理解。它可以重定向到端口,谢谢@Rizky Yoga Oktora。是否有某种方法可以同时重定向上下文和端口?ProxyPass ProxyPassReverse myhost/context1重定向到myhost/context2,但它似乎没有占用端口。