https nginx 换成其他端口_全站HTTPS第三篇:Nginx 80端口自动转发到443端口

以前在访问网站的时候,偶尔有一些疑惑。

1、为什么同一个网站使用3级域名(带www.)可以访问,使用2级域名(不带www.)不能访问,反之亦然。例如:www.net.cn  可以访问,net.cn 就不能访问。有的网站却都可以访问,如 www.ibm.com 或者 ibm.com 。(请使用IE或edge浏览器测试,不要使用google浏览器)

2. 有的网站其3级域名(www.)和2级域名都可以访问,在登录后浏览某个本站链接,发现提示又要登录。

你是否也意识到此类问题,想过为什么是这样吗?作为一个计科人查阅资料搞清楚域名分类、域名解析、cookie管理和各浏览器差异性后,拨云见日疑惑自然消失了。怎么跟普通用户科普?除了这些,难道还要科普HTTP、HTTPS吗?

用户:这么复杂,网站不是 www...吗? 为什么要有4个网址。

1)http://commsg.com

2)http://www.commsg.com

3)https://commsg.com

4)https://www.commsg.com

对比科普,还是来简单一点的吧。沿袭WWW的辉煌历史的惯性,并且全站HTTPS,决定将所有的访问都跳转到 https://ww.commsg.com 。这样的需求,我们要解决2个问题,80端口跳转到443端口和域名间跳转。这对于Nginx来说驾轻就熟,只需要简单配置即可。通过rewrite permanent将上面的域名1)、2)和3)进行301永久重定向到4)。另外,域名解析部分见第一篇。

server {

listen      80;

server_name  www.commsg.com;

charset utf-8;

rewrite ^(.*)$ https://${server_name}$1 permanent;

}

server {

listen      80;

server_name  commsg.com;

charset utf-8;

rewrite ^(.*)$ https://www.${server_name}$1 permanent;

}

server {

listen      443 ssl;

server_name  www.commsg.com;

charset utf-8;

ssl on;

ssl_certificate      d:/nginx-1.12.2/conf/cert/123456789.pem;

ssl_certificate_key  d:/nginx-1.12.2/conf/cert/123456789.key;

ssl_session_cache    shared:SSL:1m;

ssl_session_timeout  5m;

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

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers  on;

access_log d:/log/commsg.access.log;

location / {

proxy_set_header Host $host;

proxy_set_header X-Real-Ip $remote_addr;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass http://localhost:8080/;

proxy_read_timeout 180s;

break;

}

}

server {

listen      443;

server_name  commsg.com;

charset utf-8;

rewrite ^(.*)$ https://www.${server_name}$1 permanent;

}

Tips:

请注意保证最后2个server的前后顺序,否则因为找不到CA证书问题,导致不能访问。当然你也可以把他们合并一起,例如:

server {

listen      443 ssl;

server_name  commsg.com www.commsg.com;

charset utf-8;

ssl on;

ssl_certificate      d:/nginx-1.12.2/conf/cert/123456789.pem;

ssl_certificate_key  d:/nginx-1.12.2/conf/cert/123456789.key;

ssl_session_cache    shared:SSL:1m;

ssl_session_timeout  5m;

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

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers  on;

access_log d:/log/commsg.access.log;

if ($http_host !~ "^www.commsg.com$") {

rewrite  ^(.*)    http://www.commsg.com$1 permanent;

}

location / {

proxy_set_header Host $host;

proxy_set_header X-Real-Ip $remote_addr;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass http://localhost:8080/;

proxy_read_timeout 180s;

break;

}

}

全站HTTPS共3篇:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值