Ubuntu nginx 配置 SSL 证书支持 https 请求
证书格式转换地址:https://myssl.com/cert_convert.html
安装证书
一、 证书格式
申请的 nginx pem 证书一般包含 private.key
和 public.pem
文件,分别为加密的私钥和公钥文件。如果不是 pem 格式的证书,请通过文章开头的转换网址进行转换
二、 在nginx里部署证书及优化配置ssl
到nginx的conf目录,找到nginx.conf文件,修改或者配置这样一段
server {listen 443;server_name www.trustasia.com #你们的域名,如www.abc.com;ssl on;ssl_certificate /xxx/xxx/server.pem; #根据实际的路径和文件名配置ssl_certificate_key /xxx/xxx/server.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 / {root html; #站点目录index index.html index.htm;}
}
下面为配置文件参数说明:
参数 | 说明 |
---|---|
listen 443 | SSL访问端口号为443 |
ssl on | 启用SSL功能 |
ssl_certificate | 证书文件server.pem |
sslcertificatekey | 私钥文件server.pem |
ssl_protocols | 使用的协议 |
ssl_ciphers | 配置加密套件,写法遵循openssl标准 |
配置完成后,先用 sudo nginx -t
来测试下配置是否有误,正确无误的话,建议重载 nginx `sudo nginx -s reload。
三、 使用全站加密,http自动跳转https(可选)
对于用户,不是不知道https,就是知道https也因为懒,不愿意输入https。这样就有一个需求,让服务器自动把http的请求重定向到https。
在服务器这边的话配置的话,可以在页面里加js脚本,也可以在后端程序里写重定向,当然也可以在web服务器来实现跳转。Nginx是支持rewrite的(只要在编译的时候没有去掉pcre)
在http的server里 增加rewrite ^(.*) https:$host$1 permanent;
这样就可以实现80进来的请求,重定向为https了。
server {server_name www.trustasia.comrewrite ^(.*) https:$host$1 permanent; # rewrite 和 server_name 在同一层级
}
四、端口转发示例(可选)
在配置 nginx 时,进行端口转发是很常规的操作。端口转发时,一般需要添加一些额外的参数才能满足满足正常使用需求, 这里以请求转发到 8081
端口为例,提供一般的配置参考。您可根据自己的实际需求进行修改。
server {location / {proxy_pass http://127.0.0.1:8081;proxy_set_header X-Real-IP $remote_addr; # 无此配置读取用户 ip 时读到的是127.0.0.1proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;add_header Access-Control-Allow-Origin *; # 跨域问题add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';}}```