apache + tomcat的url转向和https的一些小问题
学习过程中,在域名访问这块遇到了一些小的问题,比如端口重定向,强制 https 安全连接这方面等,经过自己的努力和在度娘与谷歌的帮助下也算是完美的解决的
现在就分享下自己解决的过程,希望可以帮助到大家 ^_^。
apache:域名(端口)访问重定向
浏览器中的默认访问端口是 80,而有时候其他程序建立的站点为了不占用 80 端口因此就选择的其他的端口,比如 tomcat 用的是 8080,但是从浏览器中直接输入域名 + 端口显然是不友好的访问方式,因此这是就需要域名访问的重定向了,这里主要分享下 apache 监听 80 端口如何做到重定向其他端口。
我用的是 linux 操作系统因此也就以 linux 操作系统来演示。
首先要找到安装 apache 的所在目录如图是我的 apache 安装所在路径
然后进入 conf 文件夹配置 httpd.conf 文件
这段代码的意思是将你浏览器访问默认 80 端口的 www.jiangck.com 这个 url 重定向到 http://119.75.217.109:8080/baidu 这个 url,重定向的地方可以任意设置。
另外要想将 http 的请求全部跳转为 https 请求方式只需再虚拟主机配置里添加下面三句话
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.)?$ https://%{SERVER_NAME}$1 [L,R]
若想指定单一域名强制转到 https 只需将第三句话改为
RewriteRule ^(.$) https://跳转的目标地址 [R,L] 即可
对于 tomcat 只需要配置好 ssl 开启 https 就可以配置 apache 进行完美的跳转访问
接下来就说说如何配置 apache 以及 tomcat 的 ssl 如何配置以及如何开启 https
这里只先分享下有合法 ssl 证书的配置,也就是 https 访问时提示是安全的方式
我的域名是从腾讯云服务平台申请的,可以免费申请 1 年 ssl 的证书使用,到期可以重新申请无需担心,首先先将自己的域名证书下载来可以到证书管理哪里看看,如果没有的话就先申请,一般几分钟就可以通过然后下载了
下载后的 ssl 证书内容如下
可以看到里面有四种软件的 ssl 证书,也是非常方便的我们这里用到的有 apache 和 tomcat 所以就把这两个文件夹下的东西进行拷贝,放到服务器的目录里面。
对于 Apache:
- 首先修改 httpd.conf 文件
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
#去掉上面两行前的"#" - 打开 apache 安装目录下 conf/extra 目录下的 httpd-ahssl.conf 文件
Listen 443 监听端口是 443
找到 这个配置块
然后依次往下配置(先找,没有的就添加,有'#'注释的取消就行)
DocumentRoot "/www/server/apache/htdocs" 这里填你 ssl 证书存放的目录,以下同
ServerName www.example.com:443
SSLCertificateFile "/www/server/apache/conf/你的域名证书.crt"
SSLCertificateKeyFile "/www/server/apache/conf/你的域名证书.key"
SSLCertificateChainFile "/www/server/apache/conf/1_root_bundle.crt"
配置完保存退出重启 apache 可以进行 https 的访问了记得防火墙要开通 443 的端口哟
对于 tomcat:
- 配置 server.xml 文件
打开 tomcat 安装目录的下的 conf 文件夹下的 server.xml 进行编辑
找到
取消前面的注释这个是 tomcat 监听 https 443 端口的配置块并且添加好 ssl 证书的位置及密码
比如我的密码就在那个 txt 里面粘贴到上面就行
然后保存重启 tomcat 就可以访问浏览器输入 https://localhost 就可以直接显示 tomcat 的配置页面
- Tomcat 所有的访问连接强制为 https
在 tomcat /conf/web.xml 中的 最底下加上以下内容
<login-config>
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
即可以实现所有的 http 访问全部转为 https 了。
PS:一定要记得开放 443 端口,哪里还有缺的地方请留言撒
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于