nginx http强制跳转https

一.今天公司要配置https强制跳转

公司网址:比如打开http://www.****.com.cn/,然后跳转到https://www.*****.com.cn/
网站架构:用户–https—> nginx代理 —http—→ tomcat

二.配置nginx

因为公司域名多个,一个域名一个配置文件,没办法一个个去配置,写个公用的文件引用

1.先把证书拷贝到nginx目录

mkdir cert

2.配置公用的监听80文件

vim http.com.cn.conf

server {
   listen     80 default;
   server_name _;
   return 301 https://$host$requets_uri;  #301永久重定向,搜索引擎会将权重和 PR 值进行转移;302临时重定向,搜索引擎不会进行额外处理
}

3.公用文件include到外层nginx.conf加入以下

vim nginx.conf

include /home/S2B/nginx/nginx/conf/app-conf/prod/https.com.cn.conf;

4.把443证书的配置单独提取为公用

vim ssl.conf

ssl_certificate /home/S2B/nginx/nginx/conf/app-conf/cert/******.com.cn.crt;               #ssl证书crt存放路径
ssl_certificate_key /home/S2B/nginx/nginx/conf/app-conf/cert/*****.com.cn.key;            #ssl证书key存放路径
ssl_session_timeout 5m;                                                                   #配置会话超时时间
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;                                                      #安全链接可选的加密协议
ssl_prefer_server_ciphers on;                                                             ##优先采取服务器算法
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #定义加密算法
ssl_session_cache builtin:1000 shared:SSL:10m;                                            #设置存储session参数的缓存的类型和大小。builtin在OpenSSL中构建的缓存;仅由一个工作进程使用。缓存大小在session中指定。如果没有给出大小,则等于20480个会话。使用内置高速缓存可能导致内存碎片。shared所有工作进程之间共享缓存。缓存大小以字节为单位指定;一兆字节可以存储大约4000个session。每个共享缓存都应该有一个任意名称。具有相同名称的缓存可以用于多个虚拟服务器。
add_header Strict-Transport-Security max-age=63072000;                                    ##HSTS策略

5.把各域名文件里原80端口改成443 ssl,并把ssl.conf include进去就不要一个个配置

6.重启服务

./nginx -t
./nginx -s reload

7.报错[emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/nginx/conf/nginx.conf:69解决

1.安装OpenSSL
yum -y install openssl openssl-devel
2.在nginx安装目录下执行
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
3.运行命令
make
4.然后备份原有已安装好的nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
5.关闭nginx
./nginx -s stop
6.将刚刚编译好的nginx覆盖掉原有的nginx(这个时候nginx要停止状态)
cp ./objs/nginx /usr/local/nginx/sbin/
7.通过命令查看是否已经加入成功
/usr/local/nginx/sbin/nginx -V
posted @ 2021-03-03 11:13  記憶や空白  阅读(400)  评论(0编辑  收藏  举报