nginx 实现https 与http 共存

这个对于chrome要把http给消灭掉采取的不得不的措施

1.https

超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器身份的鉴定。HTTPS连接经常被用于万维网上的交易支付和企业信息系统中敏感信息的传输。HTTPS不应与在RFC 2660中定义的安全超文本传输协议(S-HTTP)相混。

2. 使用centos的 openssl 生成ssl证书

 

// 创建一个私钥

openssl genrsa -des3 -out server.key 1024

//创建签名请求的证书(CSR)

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

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

// 这一步很重要 楼主就死在这一步好长时间 nignx读不了密钥 导致无法启动

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

//

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

//标记证书使用上述私钥和CSR

Image201611090056

 

sll的证书是自制的 浏览器会显示证书有问题 可以到主流网站进行购买证书

https上就不会显示红色斜杠和chrome 拦截访问

 

3.对nginx进行配置(http https 共存)

// 大致就是两个端口的server进行监听 80 443

 

// 楼主 的 网页开始时只能用一个

//解决方案就是 listen 80 default;  listen 443 ssl; 加后缀

server {
listen 80 default;
server_name maoxiaomiyy.com;
index index.html index.htm index.php;
#fastcgi_pass 123.207.95.183:80;

location / {
root /testjia/;
index index.html index.htm index.php;
}
location ~ \.php$ {
root /testjia/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /testjia/$fastcgi_script_name;
include fastcgi_params;
}

}

// 这个 对php使用了两个端口 因此php也要有两个进程进行监听

//80的127.0.0.1:9000;   443的127.0.0.1:9001;

server {

listen 443 ssl;
server_name maoxiaomiyy.com;
index index.html index.php;
ssl on;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server_nopwd.key;
#ssl_certificate /etc/nginx/server.crt;
ssl_session_timeout 5m;

ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;

location / {
root /testjia/;
index index.html index.htm index.php;
}
location ~ \.php$ {
root /testjia/;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /testjia/$fastcgi_script_name;
fastcgi_param HTTPS on;
include fastcgi_params;
}
}

//保存后 从新启动

systemctl restart nginx

 

4. php两个进程的监听

使用php-fpm 进行管理

由于php-fpm是由php-fpm.conf 进行初始化的 因此两个进程就要有两个php-fpm.conf

 

// 进入目录

cd /etc/

// 拷贝一份conf 但是真正的conf在php-fpm.d 里面 我们还要 拷贝那里的

cp php-fpm.conf php-fpm1.conf

cd ./php-fpm.d/

cp www.conf www1.conf

Image201611091842

// 对 www1.conf 进行修改 将里面的改为监听443的端口

vim www1.conf

将这句话改了 listen 127.0.0.1:9001

// 将 php-fpm.conf 里面的引用改成 www.conf

// 原来是 都引入include=/etc/php-fpm.d/*conf

// 将 php-fpm1.conf 里面的引用改成 www1.conf

vim php-fpm1.conf

将这句话改了 include=/etc/php-fpm.d/www1.conf

都是在最后的

vim php-fpm1.conf

将这句话改了 include=/etc/php-fpm.d/www.conf

// 重新启动php-fpm

killall php-fpm

php-fpm -y php-fpm.conf

php-fpm -y php-fpm1.conf

Image201611093119

 

5.到此结束

 

效果图::

Image201611093557

Image201611093642

 

 

 

 


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注