nginx + tomcat + https

本贴最后更新于 2627 天前,其中的信息可能已经物是人非

刚才秉着学习的态度, 把自己的 blog 加全站 https .

环境

Centos 7
Tomcat 9
Java 8
Nginx nginx-1.12.1
solo-2.1.0

开始什么都是完美的:

申请证书

sslforfree

本来看的是 Let's Encrypt, 但是这个还要下载客户端什么的, 找到了个, 基于 Let's Encrypt 的中间商吧 😓
sslforfree : 方便处理好多. 直接跟着走, 申请验证即可. 之后就可以下载证书了, 共三个文件. 两个 crt 文件, 一个 key 文件.

安装 nginx

原来 blog 是 tomcat 发布的. 打算改为 nginx + tomcat

下载 nginx : 地址

  wage http://nginx.org/download/nginx-1.12.1.tar.gz
  tar -xzvf nginx-1.12.1.tar.gz
  mv nginx-1.12.1 nginx
  cd nginx
  ./configure --prefix=/usr/local/nginx --with-http_ssl_module  (安装中间报错需要的依赖包)
  make
  make install

一气合成

配置 nginx

nginx.conf:

upstream backend {
	server localhost:8080;
}
server{
	listen	80;
	server_name	www.pilipala.co;
	return 301	https://$server_name$request_uri;
}
server{
	listen 80;
	server_name pilipala.co;
	return 301 https://$server_name$request_uri;
}

server{
	listen      443 ssl;
	server_name pilipala.co;
	
	ssl on;
	ssl_certificate /etc/certificate/pilipala.co/certificate.crt;
	ssl_certificate_key /etc/certificate/pilipala.co/private.key;
	
	ssl_session_cache shared:SSL:1m;
	ssl_session_timeout  5m;
	ssl_protocols  SSLv2 SSLv3 TLSv1;
	ssl_ciphers  HIGH:!aNULL:!MD5;
	ssl_prefer_server_ciphers on;
	
	location / {
		proxy_pass http://backend$request_uri;
		proxy_set_header  Host $host:$server_port;
		proxy_set_header  X-Real-IP  $remote_addr;
		proxy_set_header X-Forwarded-Proto https;
		client_max_body_size  10m;
	}
}

配置 tomcat

修改 Connector

<Connector port="8080" protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="443"
      proxyPort="443"
      URIEncoding="UTF-8" />

修改 Host
在 Host 中加入下面代码

<Valve  className="org.apache.catalina.valves.RemoteIpValve"
	  remoteIpHeader="x-forwarded-for"
	  remoteIpProxiesHeader="x-forwarded-by"
	  protocolHeader="x-forwarded-proto" />

程序配置文件

latke.props

serverScheme=https
serverHost=pilipala.co
serverPort=443

至此是我的所有配置了.

但是我在访问的时候问题来了:

当你在地址拦输入 pilipala.co 时,你能看网站本来是有小绿色锁的,结果又跳到 https://pilipala.co 但是没有小绿色锁了
而后台管理页面都是正常的 诸如我现在在写文章的页面 https://pilipala.co/admin-index.do#article/article 就是正常显示小锁的,原因不明 求人解答.

ab6d2f564c674a10855b7e8bef9df514-image.png

fa30c399c38a48beaa1badc972ed9994-image.png

可以肯定的是,nginx 应该是没问题的. 当我故意吧 nginx 配置错误的时候输入网址 虽然会报 nginx 配置错误,但小锁是显示了的.

预览地址: pilipala.co

  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖
  • HTTPS
    99 引用 • 274 回帖 • 3 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • washmore

    两个小问题:

    • Mixed Content: The page at 'https://pilipala.co/' was loaded over a secure connection, but contains a form which targets an insecure endpoint 'http://zhannei.baidu.com/cse/site'. This endpoint should be made available over a secure connection.
      意思是说你的网站虽然是 https 协议的 但是引入了一些来自非信赖源 http://zhannei.baidu.com/cse/site 的资源,导致小锁失效...这个是你导航栏的百度站内搜索的原因,注释掉就好了;

    • tomcat 中的配置项,希望楼主能在了解作用的前提下使用,当然这样配置是没有问题的,不过会影响程序的某些行为;

  • someone

    NICE 真的是,一直没有看控制台〜 引入了一个 http 的资源, 改成 https 就可以了。 谢了〜

    配置项什么的会在去了解的,谢指出 :smile: