繁体   English   中英

Apache Web服务器配置-HTTP到HTTPS不起作用

[英]Apache web server configuration - HTTP to HTTPS not working

我已经在这里待了两个星期了,仍然一无所获。 什至奇怪的是,我已经在另一台服务器上完成了此操作,并且它可以正常工作,所以我不明白为什么它不起作用。 真的很沮丧。

我正在尝试在RHEL上配置apache网络服务器,以便将HTTP请求重定向到HTTPS,然后再将其指向我的tomcat。

这是我的配置:

<VirtualHost *:80>
  ServerName server.com
  Redirect / https://server.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName server.com
  ServerAlias www.server.com

  ProxyPass / http://localhost:8080/
  ProxyPassReverse / http://localhost:8080

  SSLEngine on
  SSLProxyEngine on
  SSLCertificateFile /etc/pki/tls/certs/cert.cert.pem
  SSLCertificateKeyFile /etc/pki/tls/private/key.key.pem
  #SSLCACertificateFile /etc/pki/tls/certs/ca-chain.cert.pem
</VirtualHost>

相信我,当我说我尝试了很多不同的组合却一无所获。 我已经评论并取消了对Include conf.d / ssl.conf的评论,但仍然没有效果。

拜托,我这里做错了什么?

首先:“不起作用”的描述很微弱。 我可能会也可能不会遇到您的问题,但是我看到了几种选择:

第一:测试前锋是否有效

第二:连接到https服务器后会得到什么结果? 您可以在没有转发的情况下尝试此操作-只需自己输入https协议,然后确定是否可以完全排除转发配置。

我已经在另一台服务器上完成了这项工作

您正在转发到localhost:8080 如果另一台服务器在端口8080上安装了(并正在运行)tomcat,但是您现在尝试的服务器却没有,那么,这就是您的解决方案。 本地主机始终是“同一台”计算机。

正如Ortomala Lokni在评论中提到的那样:您的ProxyPassReverse指令缺少/

ProxyPassReverse / http://localhost:8080/

请注意,使用此配置,tomcat将不知道原始请求已通过https发送-因此,tomcat上的任何CONFIDENTIAL声明都假定该请求已以明文形式发送-它将尝试重定向到https。 由于ProxyPass仍然通过http转发,因此Tomcat将永远不会知道该请求实际上是加密的。 有一些可以解决此问题的技巧 (例如,连接器配置上的secure="true" )或更合适的解决方案(例如, 通过AJP而不是http转发)

ProxyPass / ajp://localhost:8009/

(注意更改的端口)

可能会出现更多错误-万一这些提示无济于事,请进一步指定“无效”。

非常感谢! 特别是你,Olaf Kock。 您的建议是黄金! 就像您建议的那样,我决定忽略转发,而专注于尝试直接连接到HTTPS时发生的情况,那是当我遇到此错误时:

proxy: HTTP: disabled connection for (localhost)

我做了一些搜索,发现我必须运行以下命令才能使事情滚动: /usr/sbin/setsebool -P httpd_can_network_connect 1

(请注意,此命令还有其他变体,例如: setsebool -P httpd_can_network_connect onsudo setsebool -P httpd_can_network_connect on

然后,我必须在<VirtualHost _default_:443>标记下的ssl.conf文件中进行设置:

ServerName server.com
ServerAlias www.server.com

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

而且有效!

但是,我不想引用ssl.conf文件。 我希望将所有内容都保存在httpd.conf文件中,因此,在进行了一些修改之后,这对我有用,并且我相信应该对具有类似问题的任何人都有效。

因此,在注释掉include conf.d/ssl.conf行之后

LoadModule ssl_module modules/mod_ssl.so

Listen 443

#For HTTP requests, redirecting to HTTPS
<VirtualHost *:80>
  ServerName server.com
  Redirect / https://server.com/
</VirtualHost>

#For HTTPS requests
<VirtualHost *:443>
  ServerName server.com
  ServerAlias www.server.com

  ProxyPreserveHost On
  ProxyRequests Off
  ProxyPass / http://localhost:8080/
  ProxyPassReverse / http://localhost:8080/

  SSLEngine on
  SSLCertificateFile /etc/pki/tls/certs/cert.cert.pem
  SSLCertificateKeyFile /etc/pki/tls/private/key.key.pem
  #SSLCACertificateFile /etc/pki/tls/certs/ca-chain.cert.pem
</VirtualHost>

显然,您应该首先安装mod_ssl。

感谢大家!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM