nginx反向代理设置ssl,支持https
需要开启http_ssl_module模块(生产环境本身已有)
在nginx配置目录新建ssl.conf文件夹,cd到ssl.conf
第一步生成密钥: openssl genrsa -des3 -out c.com.key 1024
输入设置密码:123456 再次输入。
第二步生成证书请求:openssl req -new -key c.com.key -out c.com.csr
输入刚刚设置的密码
第三步拷贝一个不需要输入密码的密钥文件:openssl rsa -in c.com.key -out c.comss.key
输入设置的密码
第四步 配置自己的证书:openssl x509 -req -days 365 -in c.com.csr -signkey c.com.key -out c.com.crt
二。nginx.conf配置文件
增加一个server,
server {
listen 443 ssl;
server_name www.test.com;
ssl_certificate ssl.conf/c.com.crt;
ssl_certificate_key ssl.conf/c.com.key;
location / {
root /usr/local/nginx/html;
}
}
测试:本地配置hosts,浏览器访问https://www.test.com/test.html
访问出现:此网站的安全证书有问题, 则配置ok, 生产环境把买的证书放上去就可以了,
三。nginx用443接口接受请求,用其它端口进行回源请求数据,(所谓的代理) 配置如下:
upstream test {
ip_hash;
server 192.168.1.100:8090 weight=2;
server 192.168.1.101:8091 weight=1;
}
server {
listen 443 ssl;
server_name www.test.com;
ssl_certificate ssl.conf/c.com.crt;
ssl_certificate_key ssl.conf/c.com.key;
location / {
proxy_pass http://test;
}
}
四、【http与https共荐】然而这样的配置根本就满足不了公司业务需求,boss叫小兵过去说,我既要http能访问,又要https能访问,你能搞定吗,小兵心情很复杂(“又来奇葩需求”),但又不能表现出来,只能跟boss说,我去试试看,于是各种搜索加测试,配置如下:
upstream test {
ip_hash;
server 192.168.1.100:8090 weight=2;
server 192.168.1.101:8091 weight=1;
}
server {
listen 80;
listen 443 ssl;
server_name
www.test.com;
ssl_certificate ssl.conf/c.com.crt;
ssl_certificate_key ssl.conf/c.com.key;
location / {
proxy_pass
http://test;
}
}
基本配置没变,就多加一个监听端口,ok,可以交差了。
五、【http请求都转https】以为这样就可以了,boss又叫住,既然你这个能做,那把test2域名改成只要http访问的都转到https上去,能行吗,男人哪能说不行,小兵一口说道,行,nginx这点需要还是可以的。要用到rewrite
upstream test {
ip_hash;
server 192.168.1.100:8090 weight=2;
server 192.168.1.101:8091 weight=1;
}
server {
listen 80;
server_name www.test2.com;
location / {
rewrite ^(.*)$ https://$host$1 permanent; #其实就是在这里跳到下面443端口去了
}
}
server {
listen 443 ssl;
ssl_certificate ssl.conf/c.com.crt;
ssl_certificate_key ssl.conf/c.com.key;
location / {
proxy_pass
http://test;
}
}
#简单,终于交差了,
#因本人笔记跟公司业务有联系,在更新博客时,上面配置涉及公司信息地方有改动,如上面有错误请指出,难免有漏掉地方。