说明
- 域名以 www.domain.com 为例
- nginx 版本以 1.15.7 为例
前提条件
- 已准备好 https 证书
- 已安装好 nginx
证书安装
在 /etc/nginx 目录内创建 cert 文件夹,将已获取的 www.domain.com.pem 证书文件和 www.domain.com.key 私钥文件拷贝到文件夹中
没有证书可以自己自签名一个,域名随便编一个,后面ngx配置文件填上这个瞎编的域名。浏览器访问网站时用ip访问(域名瞎编的)
openssl req -newkey rsa:2048 -nodes -keyout certs/server.key -x509 -days 36500 -out certs/server.crt
创建配置文件的目录
在 /etc/nginx/conf.d 目录内新建一个文件 www.domain.com.conf,添加如下配置
server {
# 监听https的443端口
listen 443 ssl;
# 证书绑定的域名
server_name www.domain.com;
# 证书文件的位置
ssl_certificate cert/www.domain.com.pem;
# 私钥文件的位置
ssl_certificate_key cert/www.domain.com.key;
ssl_session_timeout 5m;
# 配置加密套件
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
# 配置协议
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# 静态页面,访问根目录会去找 /macc/static/index.html
location / {
root /macc/static;
index index.html
}
# 后端API
location /rycem/api/ {
# 为单独的server配置日志位置
access_log /var/log/nginx/cem-access.log;
error_log /var/log/nginx/cem-error.log notice;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8081$request_uri;;
}
}
server {
# 监听80端口
listen 80;
# 证书绑定的域名
server_name www.domain.com;
# http重定向为https
rewrite ^/(.*) https://$server_name/$1 permanent;
}
可以注意到,这个配置文件配置了两个 server 代码块。这是因为一个监听 443 端口,一个监听 80 端口。
当访问 http://www.domain.com 时,将进入监听 80 端口的 server 代码块,它会将 http 重定向为 https,进入 监听 443 端口的 server 代码块
如果访问的是 https://www.domain.com,将会进入监听 443 端口的 server 代码块
评论区