nginx+php-fpm配置HTTPS

使用ssl模块配置同时支持http和https并存

一,生成证书

1、首先,进入你想创建证书和私钥的目录,例如:

cd /etc/nginx/

2、创建服务器私钥,命令会让你输入一个口令:

openssl genrsa -des3 -out server.key 2048

3、创建签名请求的证书(CSR):

openssl req -new -key server.key -out server.csr

4、在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:

cp server.key server.key.org

openssl rsa -in server.key.org -out server.key

5、最后标记证书使用上述私钥和CSR:

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

二,配置nginx

cd /etc/nginx

vim nginx.conf

HTTPS server configuration


server {

        #侦听443端口

        listen       443;

        ssl           on;

        #证书地址

    ssl_certificate      /etc/nginx/server.crt;

    ssl_certificate_key  /etc/nginx/server.key;

    ssl_session_timeout  5m;

        index index.php index.html index.htm;

        #设定本虚拟主机的访问日志

        server_name  localhost;

         root /var/www;

        #rewrite_log on;

        #access_log  logs/hc-admin.access.log  main;

        #error_log  logs/hc-admin.access.log  main;

    location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css|ttf|woff|woff2)$

    {

        root /var/www;

    }

    location / {  

        index  index.htm index.html index.php;  

    }  

    location ~ \.php/?.*$ {  

        root        /var/www;  

        fastcgi_pass   127.0.0.1:9000;  

        fastcgi_index  index.php;  

        #加载Nginx默认"服务器环境变量"配置  

        #include        fastcgi.conf;  

        include fastcgi_params; 

        #设置PATH_INFO并改写SCRIPT_FILENAME,SCRIPT_NAME服务器环境变量  

        set $fastcgi_script_name2 $fastcgi_script_name;  

        if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {  

            set $fastcgi_script_name2 $1;  

            set $path_info $2;  

        }  

        fastcgi_param   PATH_INFO $path_info;  

        fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name2;  

        fastcgi_param   SCRIPT_NAME   $fastcgi_script_name2;  

    }

    }

重启nginx,在浏览器输入:https://IP地址 会跳转到 http://IP地址/ssl/ 这个地址(后期调整为webservice接口地址即可)

三、受浏览器信任的StartSSL免费SSL证书:

跟VeriSign一样,StartSSL(网址:http://www.startssl.com,公司名:StartCom)也是一家CA机构,

它的根证书很 久之前就被一些具有开源背景的浏览器支持(Firefox浏览器、谷歌Chrome浏览器、苹果Safari浏览器等)。

四、项目需要,将访问目录 \services\ 由http访问 重定向到 https (解决方法:nginx rewrite 加上 location 方式实现)


location ~ /services/.*$ {

        if ($server_port ~ "^80$"){

            set $rule_0 1$rule_0;

        }

        if ($rule_0 = "1"){

            rewrite /(.*) [https://IP](https://ip/)地址/$1 permanent;                       break;

        }

    }

五,配置结束上传以后用nginx -t 测试下配置无误 就reload一下nginx服务 检查443端口是否在监听

/usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok  


nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful (显示表示配置文件没有错误)

service nginx reload (重新加载nginx服务)  

netstat -lan | grep 443 (查看443端口)  

tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN (有看到这一行 就表示HTTPS已经在工作了)
本作品采用《CC 协议》,转载必须注明作者和本文链接
Vckin
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!