QQ空间迁移_【一起IE疑难杂症引起的NGIN血案】

一起IE疑难杂症引起的NGIN血案

2019-04-22 17:42:00

事情的起因是客户需要部署SSL证书,并且只能使用指定域名访问。Soeasy!

安装openssl====>编译nginx=====>配置nginx

配置文件如下

server {

listen8443 ssl;

server_namewww.xxxxx.com.cn;

proxy_redirecthttp:// https://;

ssl_certificate /usr/local/nginx/conf/ssl.crt;

ssl_certificate_key/usr/local/nginx/conf/ssl.key;

ssl_session_timeout5m;

ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

ssl_protocolsTLSv1.2;

ssl_protocols TLSv1.2 TLSv1.1 TLSv1;

ssl_prefer_server_cipherson;

location/ {

proxy_passhttp://x.x.x.x:8000;

proxy_redirect off;

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

server {

listen8443 ssl default_server;

server_name_;

ssl_certificate /usr/local/nginx/conf/ssl.crt;

ssl_certificate_key/usr/local/nginx/conf/ssl.key;

return403;

}

}

其实就这个配置也遇到了几个问题

第一个问题:

Https://www.xxxxx.com.cn:8443 登录之后会自动跳转到Http://www.xxxxx.com.cn:8000

网上收集了3种跳转方法

rewrite ^(.*)     h t t p s : / /   https://   https://host:8443$1 permanent;

return 301 http:// h o s t ] ( h t t p : / / host](http:// host](http://host:8443 r e q u e s t u r i ; ) [ : 8443 ] ( h t t p : / / request_uri;)[:8443](http:// requesturi;)[:8443](http://host:8443 r e q u e s t u r i ; ) [ request_uri;)[ requesturi;)[request_uri;

proxy_redirect http:// https://;

请注意: p r o x y _ h o s t | proxy\_host| proxy_hosthost|$http_host的区别

三种方法都不成功,判断哪里的配置有冲突,配置到第三种方法的时候,下面的的这条配置引起了注意

注释掉这条配置信息之后,正常。

proxy_redirect off;

第二个问题 只运行指定的域名访问,因为是ssl 所以配置访问限制的时候,也需要带上SSL证书。

server {

listen8443 ssl default_server;

server_name_;

ssl_certificate /usr/local/nginx/conf/ssl.crt;

ssl_certificate_key/usr/local/nginx/conf/ssl.key;

return403;

}

狗血的剧情来了…

这个时候客户要求 同时提供http和https访问端口分别为8000 和8443 ,然后8000强制跳转到8443

按道理来说也是非常简单的。

最简单的配置如下

server {

listen 8000;

listen8443 ssl;

server_namewww.xxxxx.com.cn;

proxy_redirect http:// https://;

error_page 497  https:// h o s t : 8443 host:8443 host:8443uri?$args;

ssl_certificate /usr/local/nginx/conf/ssl.crt;

ssl_certificate_key/usr/local/nginx/conf/ssl.key;

ssl_session_timeout5m;

ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

ssl_protocolsTLSv1.2;

ssl_prefer_server_cipherson;

location/ {

proxy_passhttp://x.x.x.x:8000;

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

server {

listen8443 ssl default_server;

server_name_;

ssl_certificate /usr/local/nginx/conf/ssl.crt;

ssl_certificate_key/usr/local/nginx/conf/ssl.key;

return403;

}

}

然后发现部分浏览器正常,部分不正常。 放弃最简单的方式,改用正常的虚拟主机方式

保持原有配置不变,新增如下配置

server {

listen8000;

server_namewww.xxxxx.com.cn;

return 301 http:// h o s t ] ( h t t p : / / host](http:// host](http://host:8443 r e q u e s t u r i ; ) [ : 8443 ] ( h t t p : / / request_uri;)[:8443](http:// requesturi;)[:8443](http://host:8443 r e q u e s t u r i ; ) [ request_uri;)[ requesturi;)[request_uri;

location/ {

proxy_passhttp://x.x.x.x:8000;

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;

}

还是部分浏览器正常,部分不正常。当我把nginx的配置删了又改,改了又删还是不对,于是怀疑是客户端的浏览器有问题,于是叫客户给我开了两台客户端,分别对比

1、chrome 两台客户端都正常

2、firefox 两台都正在

3、360浏览器 一台正常,一台不正常,对比发现正常的使用的是IE兼容模式,不正常的是使用的极速模式改过来就正常了

狗血的IE浏览器疑难杂症出现了,一台正常,一台怎么都无法跳转访问Http://www.xxxxx.com.cn:8000

提示INET_E_DOWNLOAD_FAILURE

尝试重置IE浏览器,居然点击重置无效,尝试网上找IE修复工具,一大堆工具,但是不敢用,最尝试卸载IE ,然后重装,这个时候特么的还是不能跳转。

就在失望的时候,准备下载所有工具一一尝试的时候,IE重置又可以用了,重置后重启,IE浏览器恢复正常

评论(0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值