apache转发tomcat http转https

最近在弄小程序,而小程序网络请求所需要的链接需要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
比如配置为:/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)->允许链接->命名


由于个人技术水平有限,如有什么不对的地方,欢迎指正。





  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值