首先说明一点,并不是仅仅配置就可以使用真正的https服务,因为需要向证书颁发机构申请SSL证书
首先生成私钥和csr文件
切换到某个目录,在linux机器上执行以下命令生成私钥
openssl genrsa -out server.key 2048
然后在linux机器上执行以下命令生成csr文件
openssl req -new -key server.key -out certreq.csr
以下标识文字仅供参考,请根据商户自己实际情况进行填写
Country Name: CN //您所在国家的ISO标准代号,中国为CN
State or Province Name:beijing //您单位所在地省/自治区/直辖市
Locality Name:beijing //您单位所在地的市/县/区
Organization Name: liminghulian //您单位/机构/企业合法的名称
Organizational Unit Name: dev //部门名称
Common Name: www.liminghulian.com //通用名,例如:www.liminghulian.com。此项必须与您访问提供SSL服务的服务器时所应用的域名完全匹配。
Email Address: //您的邮件地址,不必输入,直接回车跳过
"extra"attributes //以下信息不必输入,回车跳过直到命令执行完毕。
执行上面的命令后,在当前目录下即可生成私钥文件server.key和certreq.csr csr文件
以腾讯云的服务器作为参考
然后按要求把解析域名配置好,最后会得到以下界面
把证书下载下来会得到nginx中的两个文件如图
将这两个文件放到自己定义的目录,这里我放到的目录是 /https/
配置参考如下:
server {
listen 443;
server_name mobai.luomengyuan.cn;
access_log /data/wwwlogs/access_nginx.log combined;
root /data/wwwroot/mobaidanche/laravel/public;
index index.html index.htm index.php;
ssl on; #开启ssl支持
ssl_certificate /https/1_mobai.luomengyuan.cn_bundle.crt; #指定服务器证书路径
ssl_certificate_key /https/2_mobai.luomengyuan.cn.key; #指定私钥证书路径
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #指定SSL服务器端支持的协议版本
ssl_ciphers ECDHE-RSA-AES128-GCM-
SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
#pathinfo 支持开始 以上配置信息根据实际情况配置
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
#pathinfo 支持结束
}
location / {
#如果没有找到请求的文件
if (!-e $request_filename){
#rewrite ^(.*)$ /index.php?s=/$1 last;
#重写 正则匹配 重定向后的地址
rewrite ^(.*)$ /index.php/$1 last;
}
}
}
做完以上工作后测试nginx配置文件无误后重新载入配置,如果需要配置通过http访问时自动跳转到https 可以在80端口对应的虚拟主机配置中设置
server {
listen 80;
server_name mobai.luomengyuan.cn;
rewrite ^(.*) https://mobai.luomengyuan.cn$1 permanent;
}