nginx强制使用https访问(http跳转到https

简介:   需求简介基于nginx搭建了一个https访问的虚拟主机,监听的域名是test.com,但是很多用户不清楚https和http的区别,会很容易敲成http://test.com,这时会报出404错误,所以我需要做基于test.

 

 需求简介

基于nginx搭建了一个https访问的虚拟主机,监听的域名是test.com,但是很多用户不清楚https和http的区别,会很容易敲成http://test.com,这时会报出404错误,所以我需要做基于test.com域名的http向https的强制跳转

我总结了三种方式,跟大家共享一下

 

 

nginx的rewrite方法

 

思路

这应该是大家最容易想到的方法,将所有的http请求通过rewrite重写到https上即可

 

配置

 

  1. server {  

  2.     listen  192.168.1.111:80;  

  3.     server_name test.com;  

  4.       

  5.     rewrite ^(.*)$  https://$host$1 permanent;  

  6. }  


搭建此虚拟主机完成后,就可以将http://test.com的请求全部重写到https://test.com上了

 

 

nginx的497状态码

 

error code 497


 

  1. 497 - normal request was sent to HTTPS  


解释:当此虚拟站点只允许https访问时,当用http访问时nginx会报出497错误码

 

思路

利用error_page命令将497状态码的链接重定向到https://test.com这个域名上

 

配置


 

  1. server {  

  2.     listen       192.168.1.11:443;  #ssl端口  

  3.     listen       192.168.1.11:80;   #用户习惯用http访问,加上80,后面通过497状态码让它自动跳到443端口  

  4.     server_name  test.com;  

  5.     #为一个server{......}开启ssl支持  

  6.     ssl                  on;  

  7.     #指定PEM格式的证书文件   

  8.     ssl_certificate      /etc/nginx/test.pem;   

  9.     #指定PEM格式的私钥文件  

  10.     ssl_certificate_key  /etc/nginx/test.key;  

  11.       

  12.     #让http请求重定向到https请求   

  13.     error_page 497  https://$host$uri?$args;  

  14. }  

 


index.html刷新网页

 

思路

上述两种方法均会耗费服务器的资源,我们用curl访问baidu.com试一下,看百度的公司是如何实现baidu.com向www.baidu.com的跳转

 

 

可以看到百度很巧妙的利用meta的刷新作用,将baidu.com跳转到www.baidu.com.因此我们可以基于http://test.com的虚拟主机路径下也写一个index.html,内容就是http向https的跳转

 

index.html

[html] view plaincopyprint?

 

  1. <html>  

  2. <meta http-equiv="refresh" content="0;url=https://test.com/">  

  3. </html>  


nginx虚拟主机配置

 

  1. server {  

  2.     listen 192.168.1.11:80;  

  3.     server_name test.com;  

  4.       

  5.     location / {  

  6.                 #index.html放在虚拟主机监听的根目录下  

  7.         root /srv/www/http.test.com/;  

  8.     }  

  9.         #将404的页面重定向到https的首页  

  10.     error_page  404 https://test.com/;  

目录
相关文章
|
1月前
|
网络协议 Shell 网络安全
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
163 0
|
3月前
|
应用服务中间件 nginx
百度搜索:蓝易云【利用nginx内置ngx_http_mirror_module模块实现流量复制及流量放大】
以上就是使用Nginx内置 `ngx_http_mirror_module`模块实现流量复制和流量放大的简要示例。通过合理配置和利用该模块,可以实现更复杂的流量控制和调试需求。
56 1
|
3月前
|
安全 网络协议 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
30 0
|
3月前
|
应用服务中间件 nginx
百度搜索:蓝易云【HTTP请求是如何关联Nginx server{}块的?】
总结来说,Nginx中的 `server{}`块用于关联HTTP请求和虚拟主机,通过配置不同的 `server{}`块,可以实现多个域名或IP地址的请求分发和处理。这样,Nginx可以根据不同的请求来提供不同的服务和内容。
37 0
|
4月前
|
JavaScript
如何让Vue项目本地运行的时候,同时支持http://localhost和http://192.168.X.X访问?
如何让Vue项目本地运行的时候,同时支持http://localhost和http://192.168.X.X访问?
|
2月前
|
缓存 负载均衡 应用服务中间件
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
71 1
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
|
3月前
|
存储 安全 网络安全
HTTP与HTTPS的区别:安全性、协议地址和默认端口等比较
HTTP与HTTPS的区别:安全性、协议地址和默认端口等比较
150 0
|
3月前
|
安全 网络协议 API
探析HTTP 和 HTTPS:你需要知道的区别
网络安全问题正变得日益重要,而 HTTP 与 HTTPS 对用户数据的保护十分关键。本文将深入探讨这两种协议的特点、工作原理,以及保证数据安全的 HTTPS 为何变得至关重要。
|
4月前
|
前端开发 JavaScript 应用服务中间件
个人博客网站如何实现https重定向(301)到http
对于个人网站站注册比较少的,服务器配置不是很好的,没必要https,https跳转到http是要时间的,会影响网站打开的速度。免费的https每年都要更换。
63 2
|
4月前
|
应用服务中间件 Linux 网络安全
Linux【脚本 06】HTTPS转发HTTP安装OpenSSL、Nginx(with-http_ssl_module)及自签名的X.509数字证书生成(一键部署生成脚本分享)
Linux【脚本 06】HTTPS转发HTTP安装OpenSSL、Nginx(with-http_ssl_module)及自签名的X.509数字证书生成(一键部署生成脚本分享)
66 1