这几天搭建了视频解析网站,在搭建的时候发现了解析VIP视频的接口基本都是HTTP协议的,而自己的网站采用的是HTTPS协议(包括HTTP也强制转换为HTTPS)。为了解决这个问题,也考虑了不强转HTTPS,使用HTTP可访问域名+物理地址,但是基于这种方案的安全性考虑,最终选择了二级域名搭建视频解析网站,而域名本身还是强制转为HTTPS。
出现错误
- 错误主要是在HTTPS网站中引入HTTP的资源引起的,在各种浏览器中显示的错误都不一样,在Chrome中出现的错误为:This request has been blocked; the content must be served over HTTPS.。错误如下图:
- 解决方法
- 如果HTTP请求的资源支持HTTPS,直接进行修改或在HTML增加:,浏览器会将HTTP自动升级为HTTPS进行请求。
- 如果不支持,网上有说IFrame引入,但是亲测在Chrome中无效,部分手机浏览器支持。因此考虑了二级域名进行设置,这样的话,请求一级域名及有关资源都只能HTTPS,而二级资源则是HTTP,不破坏网站的安全性。
##增加二级域名解析
由于我的域名是腾讯云的,所以我直接打开了自己域名的解析,设置了自己的二级域名:v.richule.com 。设置结果如下图:
设置了该二级域名后,当搜索http://v.richule.com,DNS会指向设置的主机IP地址的80端口(HTTPS即443端口)。
设置Nginx解析二级域名
当服务器接收到DNS的请求,Nginx应用服务器会根据不同的域名会通过请求头中的HOST字段,匹配到特定的server块,再执行相应的程序代码文件。
-
请求域名和server块中server_name的匹配顺序
可以先看看博客:https://blog.csdn.net/cheng_kohui/article/details/82930464。- 完全匹配
- 通配符在前的,如*.test.com
- 在后的,如www.test.*
- 正则匹配,如~^.www.test.com$
如果都不匹配 - 优先选择listen配置项后有default或default_server的
- 找到匹配listen端口的第一个server块
-
v.richule.com的server块设置
server_name暂时没写正则匹配,这个可以后续完善。
server {
listen 80;
server_name v.richule.com;
index index文件;
root 路径;
# error_page 404 /404.html;
# Deny access to PHP files in specific directory
# location ~ /(wp-content|uploads|wp-includes|images)/.*.php$ { deny all; }
include enable-php-pathinfo.conf;
location /nginx_status
{
stub_status on;
access_log off;
}
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /.
{
deny all;
}
access_log /home/wwwlogs/access.log;
}
一级域名的设置
- 上面的server块进行了关于二级域名v.richule.com的解析设置,为了不影响一级域名的解析(HTTPS及HTTP强转HTTPS访问),也还是要加上rewrite ^(.*)$ https://$host$1 permanent; 因此80端口的server块还要新增一个(在二级域名解析server的前面)。代码如下:
server {
listen 80;
server_name www.richule.com richule.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
增加了这个server后,如果请求域名是www.richule.com richule.com都会强转为https访问。
- 原443端口server的设置不变
server {
listen 443 default_server;
ssl on;
# listen [::]:80 default_server ipv6only=on;
server_name richule.com www.richule.com;
...
...
}
个人博客:Loak 正 - 关注人工智能及互联网的个人博客
文章地址:利用Nginx二级域名解决HTTPS引入HTTP致命错误