Nginx 配置 http 强制跳转到 https
个人真实配置
架构:Nginx 反向代理 + Nginx 前端(LNMP)
在 Nginx 反向代理的 虚拟机主机配置文件中,作如下配置:
upstream ilexa_cn {
server 192.168.1.100:80;
keepalive 50;
} server {
listen 80;
server_name ilexa.cn;
return 301 https://$server_name$request_uri;
} server {
listen 443 ssl;
server_name ilexa.cn;
access_log logs/ilexa_cn.log main;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Connection "keep-alive";
ssl on;
ssl_session_timeout 5m; ssl_certificate /etc/nginx/pki/ilexa_cn_bundle.crt;
ssl_certificate_key /etc/nginx/pki/ilexa_cn.key; location / {
proxy_pass http://ilexa_cn;
proxy_set_header Host $host;
# needed for HTTPS
proxy_set_header X_FORWARDED_PROTO https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} error_page 497 https://$host$uri?$args;
}
【网络资料】Nginx 配置 http 强制跳转到 https
Nginx 的 return 301 跳转
项目的虚拟主机配置文件:
#先监听80端口,为http请求,然后强制转发到https监听的443端口上面
server {
listen 80;
root /var/www/html/ilexa/;
server_name ilexa.cn;
return 301 https://$server_name$request_uri;
} #监听443端口,https请求
server {
listen 443 ssl;
root /var/www/html/ilexa/;
index index.php index.html index.htm;
server_name ilexa.cn; ssl on;
ssl_certificate /etc/nginx/pki/ilexa_cn_bundle.crt;
ssl_certificate_key /etc/nginx/pki/ilexa_cn.key; ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #按照这个套件配置
ssl_prefer_server_ciphers on; location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS $https if_not_empty; # 网上资料有的这行也不增加
include fastcgi_params;
}
}
Nginx 的 Rewrite 方法
将所有的 http 请求通过 rewrite 重写到 https 上即可
Nginx前端的配置:
#先监听80端口,为http请求,然后强制转发到https监听的443端口上面
server {
listen 80;
root /var/www/html/ilexa/;
server_name ilexa.cn;
rewrite ^(.*) https://$server_name$1 permanent;
} #监听443端口,https请求
server {
listen 443 ssl;
root /var/www/html/ilexa/;
server_name ilexa.cn;
ssl_certificate /etc/nginx/pki/ilexa_cn_bundle.crt;
ssl_certificate_key /etc/nginx/pki/ilexa_cn.key; location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
搭建此虚拟主机完成后,就可以将 http://ilexa.cn 的请求全部重写到 https://ilexa.cn 上了
Nginx 的 497 状态码
497 - normal request was sent to HTTPS
解释:当此虚拟站点只允许https访问时,当用 http 访问时 nginx 会报出497错误码
思路:
利用error_page命令将497状态码的链接重定向到 https://ilexa.cn 这个域名上
配置:
server {
listen 192.168.1.100:443; #ssl端口
listen 192.168.1.100:80; #用户习惯用http访问,加上80,后面通过497状态码让它自动跳到443端口
server_name ilexa.cn; ssl on; #为一个server{......}开启ssl支持 ssl_certificate /etc/nginx/ilexa_cn.crt; #指定crt格式的证书文件
ssl_certificate_key /etc/nginx/ilexa_cn.key; #指定crt格式的私钥文件 #让http请求重定向到https请求
error_page 497 https://$host$uri?$args;
}
利用 meta 的刷新作用(index.html首页跳转)
以上两种方法均会耗费服务器的资源,我们用 curl 访问baidu.com试一下,看百度的公司是如何实现 baidu.com 向 www.baidu.com 的跳转
可以看到百度很巧妙的利用 meta 的刷新作用,将 baidu.com跳转到www.baidu.com.因此我们可以基于 http://ilexa.cn 的虚拟主机路径下也写一个index.html,内容就是http向https的跳转
index.html 文件内容:
<html>
<meta http-equiv="refresh" content="0;url=https://ilexa.cn/">
</html>
nginx 虚拟主机配置:
server {
listen 192.168.1.100:80;
server_name ilexa.cn; location / {
root /srv/www/ilexa/; #index.html放在虚拟主机监听的根目录下
} error_page 404 https://ilexa.cn/; #将404的页面重定向到https的首页
}
Aapache 下 http 强制跳转到 https 的配置
根目录建立 .htaccess 文件。内容如下
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
当用户在浏览器直接输入域名 ilexa.cn 的时候,这时候域名直接会转向https://ilexa.cn,而且服务器这样配置的效率也蛮高的。
Nginx 配置 http 强制跳转到 https的更多相关文章
- Nginx配置http强制跳转到https
目的:访问http://sdk.open.test.com/时强制自动跳转到https://sdk.open.test.com/ 修改nginx站点配置文件sdk.open.test.com.conf ...
- nginx配置http强制跳转https
nginx配置http强制跳转https 网站添加了https证书后,当http方式访问网站时就会报404错误,所以需要做http到https的强制跳转设置. 一.采用nginx的rewrite方法 ...
- tomcat7.0.55配置HTTP强制跳转到HTTPS
首先需要配置好HTTPS单向或双向链接 参考: tomcat7.0.55配置单向和双向HTTPS连接(二) 然后编辑tomcat的conf目录下的web.xml 在<welcome-file-l ...
- Nginx的https配置记录以及http强制跳转到https的方法梳理
一.Nginx安装(略)安装的时候需要注意加上 --with-http_ssl_module,因为http_ssl_module不属于Nginx的基本模块.Nginx安装方法: 1 2 # ./con ...
- (转)Nginx的https配置记录以及http强制跳转到https的方法梳理
Nginx的https配置记录以及http强制跳转到https的方法梳理 原文:http://www.cnblogs.com/kevingrace/p/6187072.html 一.Nginx安装(略 ...
- 阿里云SLB上http强制跳转到https问题处理
背景: 最近一客户有一个需求,需要将外网所有http访问请求强制跳转到https,公网出口使用阿里云SLB,证书放在SLB上,SLB后端实例为ECS(webserver)web服务使用nginx, 网 ...
- k8s ingress路由强制跳转至https设置
为ingress配置增加注解(annotations):nginx.ingress.kubernetes.io/ssl-redirect: 'true' 就可以实现http强制跳转至https 不过默 ...
- http强制跳转到https
原文地址:http://m.blog.csdn.net/article/details?id=8549290 需求简介 基于nginx搭建了一个https访问的虚拟主机,监听的域名是test.com, ...
- https进行配置以及http跳转到https配置
https配置: nginx配置 server { listen 443; server_name localhost; ssl on; root html; index index.html ind ...
随机推荐
- 取得min和max之间包括端点的随机整数
产生随机数的函数用处不少,写一个放博客里备用,函数如下: /** * get a random integer between min and max * @param min * @param ma ...
- Mybatis项目构建和CURD操作
Mybatis入门 一.使用SqlSession对象创建Dao接口代理对象进行持久化操作 1.使用maven构建java项目 2.修改pom.xml配置,添加所需jar包坐标 <?xml ver ...
- VMware虚拟中输入ifconfig提示not found解决办法
1. 查看虚拟机是否没有IP地址:命令行中输入ip addr,如图红框所示,若无是需要设置. 2. 进入sbin目录确认ifconfig是否安装:可以通过命令[ls | grep 'if']来看 3. ...
- Linux:正则表达式2
基础正则表达式 ^ : 以xx开头 $ :以xx结尾 ^$ :代表空行 . 任意一个字符 \ :转义符号,让有着特殊意义的字符可被使用 * :重复0个或多个前面的字符,例如 a* 2表示a后面 ...
- 高可用服务之Keepalived利用脚本实现服务的可用性检测
上一篇博客主要聊到了keepalived高可用LVS集群的相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13659428.html:keepalive ...
- [Leetcode]225. 用队列实现栈 、剑指 Offer 09. 用两个栈实现队列
##225. 用队列实现栈 如题 ###题解 在push时候搞点事情:push时入队1,在把队2的元素一个个入队1,再交换队2和队1,保持队1除pushguocheng 始终为空. ###代码 cla ...
- Windows实战(1):Nginx代理设置及负载均衡配置
简言 以下配置实现功能: 反向代理 通过轮询的方式实现nginx负载均衡 直接看以下配置文件: #user nobody; worker_processes 1; #error_log logs/er ...
- [go语言]-深入理解singleflight
目录 前言 singleflight使用场景 singleflight 简介 singleflight的使用 从singleflight的test最简单用法 验证并发重复请求 singleflight ...
- java 泛型学习随笔
对于java 泛型 编译时处理,运行时擦除的特点理解 对于编译时处理 在使用泛型相关的类或方法时,如果声明时的类型和具体使用时的类型不一致则直接会编译不通过 对于运行时擦除 当在运行时对两个相同类型但 ...
- domReady的理解
domReady的理解 domReady是名为DOMContentLoaded事件的别称,当初始的HTML文档被完全加载和解析完成之后,DOMContentLoaded事件被触发,而无需等待样式表.图 ...