您的位置:首页 > 理论基础 > 计算机网络

apache转发tomcat http转https

2018-02-05 16:51 232 查看
最近在弄小程序,而小程序网络请求所需要的链接需要https安全链接,之前胡乱配置一番可以用了,不过并不太理解。

后来又需要一个php项目,各处查看了一下,需要apache服务器,而我的只有一个域名,已经给了tomcat了,如果在域名后面加端口号又显得太蠢,但总不可能在申请一个域名吧?思来想去,只能配置转发了。

(这里更正一下,其实并不是域名问题,而是我只有一个服务器,所以就打算弄集群了,后来我才知道可以申请二级域名来着)

如果是新解压的tomcat,并不需要配置什么,主要都是在apache上。

我所使用的是apache2.4,证书使用的是letsencrypt-win-simple.v1.9.8.2生成的证书。

在Apache24/conf/httpd.conf文件修改:

找到

LoadModule ssl_module modules/mod_ssl.so

LoadModule rewrite_module modules/mod_rewrite.so

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

Include conf/extra/httpd-ssl.conf

并去掉前面的#就行

这里说一下,在apache里面自动配有ssl凭证了,就是

Include conf/extra/httpd-ahssl.conf

在它里面有一行 Listen 443 https,这是开启443端口的监听,如果你不需要ahssl配置,可以把Include conf/extra/httpd-ahssl.conf屏蔽掉,并且在httpd-ssl.conf文件里加上Listen
443 https

(由于使用的apache自带凭证,会提示您的连接不是私密连接,所以还是使用自己的凭证吧)

在httpd.conf文件的最末尾加上

RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
RewriteLog logs/rewrite.log
RewriteLogLevel 10

这是http转https的,如果有碰到RewriteLog和RewriteLogLevel报错,就把这两个屏蔽掉(这是输出日志,暂且还没去找解决办法,主要是不怎么用到)

接下来是Apache24/conf/extra/httpd-ssl.conf文件:

在上面Include conf/extra/httpd-ssl.conf就是引用这个文件

贴上我的配置

<VirtualHost _default_:443>
SSLEngine on
ServerName localhost:443 #对应httpd.conf里的ServerName
ServerAlias www.example.com www.xxx.com  #可以配置多个域名,这里我不需要
SSLProtocol TLSv1 TLSv1.1 TLSv1.2
SSLCertificateFile "${SRVROOT}/conf/ssl/www.example.com-crt.pem" #证书文件地址
SSLCertificateKeyFile "${SRVROOT}/conf/ssl/www.example.com-key.pem" #证书密钥地址
   #我把这两个文件复制进apache/conf/ssl文件夹下,如果在其他文件夹,可以写绝对路径
   DocumentRoot "${SRVROOT}/htdocs" #项目路径,如果只是转发,可以不需要
CustomLog "${SRVROOT}/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
<Directory "${SRVROOT}/htdocs">
Options Indexes Includes FollowSymLinks
AllowOverride AuthConfig Limit FileInfo
  Require all granted
</Directory>
ProxyPass		/ http://localhost:8080/ 转发配置
ProxyPassReverse 	/ http://localhost:8080/ </VirtualHost>


上面我的配置按着简单来配的,暂时没发现其他问题。

说明一下ProxyPass和ProxyPassReverse,配置格式为:

ProxyPass		/项目名 http://tomcat项目路径:tomcat端口号/url ProxyPassReverse 	/项目名 http://tomcat项目路径:tomcat端口号/url[/code] 比如配置为:/example http://localhost:8080/example 表示的是当我输入域名www.example.com的时候,访问的是apache目录下的htdocs里面的项目

而当我输入www.example.com/example的时候,访问的才是tomcat下的example项目

由于我在tomcat/conf/server.xml配置了默认访问项目,并且需要直接使用域名就可以访问example项目,所以直接以/表示tomcat的根目录,并且不需要url,url可以表示项目,也可以是某一链接

最后在说一下,记得打开防火墙,把80端口和443端口开放,否则无法使用域名直接访问。

右下角->打开网路和共享中心->windows网络防火墙->高级设置->入站规则->新建规则

在打开的窗口里选择->端口->TCP:特定本地端口:(填80或者443)->允许链接->命名

由于个人技术水平有限,如有什么不对的地方,欢迎指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息