引言

本文介绍nginx从80端口重定向到443端口的实现方法,也就是实现http访问自动跳转到https的功能。

修改nginx.conf配置文件

按照如下格式修改nginx.conf配置文件(只需要增加第6行代码rewrite ^(.*)$ https://${server_name}$1 permanent;即可),80端口会自动转发给443端口,这样就强制使用SSL证书进行加密了。也就实现了访问http的时候自动跳转到https的功能。

1
2
3
4
5
6
7
server {
listen 80;
server_name zsyyblog.com;

#核心代码
rewrite ^(.*)$ https://${server_name}$1 permanent;
}

备注:${server_name}可以换成$host

修改配置后重启nginx:service nginx reload 或者 systemctl reload nginx.service 或者 ./nginx -s reload

如果还没有配置443端口的监听,请参考下面的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 443;
server_name zsyyblog.com;

#开启ssl证书认证
ssl on;
access_log /data/nginx/zsyyblog.access.log main;
keepalive_timeout 60;

#证书路径,根据实际情况改写
ssl_certificate /data/nginx/cert/zsyyblog.com.pem;
ssl_certificate_key /data/nginx/cert/zsyyblog.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
#禁止在header中出现服务器版本,防止黑客利用版本漏洞攻击
server_tokens off;
}

重定向参考配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;
server_name zsyyblog.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}

server {
listen 80;
server_name www.zsyyblog.com;
rewrite ^(.*)$ https://zsyyblog.com$1 permanent;
}

server {
listen 443;
server_name www.zsyyblog.com;
rewrite ^(.*)$ https://zsyyblog.com$1 permanent;
}

通过上面的配置实现将请求全部跳转至一个域名地址:https://zsyyblog.com