`
lu281636715
  • 浏览: 10238 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Nginx 配置ssl 3种方式

阅读更多

Nginx 配置ssl 证书,增加外层网络传输安全协议,而局域网内应用服务器配置不变;由https 协议请求访问到http协议应用服务器。

由于,两种传输协议的不同,导致从应用服务器获得的scheme是本地的http协议。而Web服务器提供是https协议。因此从页面获得图片、样式使用scheme方式获取不到资源。导致页面加载不到图片及样式。

 

解决方式,是更改页面获取图片及样式的方式。放弃用绝对路径,改用相对路径。这样jsp会一个有问题。当用redirect做请求转发的时候,javaweb会采用标准重新获取服务器所在环境,得到是http进行跳转而不是采用https协议。

 

解决方式一,是重写tomcat下catalina.jar包,org.apache.connector.Request. getScheme()方法,以及org.apache.connector.Request. getServerPort()方法。使其返回https协议类型及443端口。

 

解决方式二,是在nginx配置location中添加

       proxy_set_header  Host  $host;

       proxy_set_header  X-Real-IP  $remote_addr;

       proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;

       proxy_set_header  X-Forwarded-Proto  $scheme;

       同时在tomcat配置文件server.xml中Engine 模块下添加

              <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" protocolHeaderHttpsValue="https"/>

 

       解决方式三,是在nginx配置中添加server

           server {

             listen       80;

             server_name  http域名;

             rewrite ^/(.*) https域名/$1 permanent;

         }

       使其,在发起http请求时,直接跳转到https中重新请求地址。(会发起两次请求)

 

       另,解决IE跨域下不存储cookie的问题。

首先,检查域名不能包含特殊字符如:?/\;:@#$%^~_=+, 。<>只能是字母、数据及横杠才可以。

其次,在请求返回页面时,添加响应请求头:

response.addHeader("P3P", "CP=CAO PSA OUR");

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics