NGINX反向代理设置SSL,支持HTTPS

NGINX反向代理设置SSL,支持HTTPS
需要开启http_ssl_module模块(生产环境本身已有)

一。生成ssl安全证书,

            在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共荐】配置如下:
   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;
             }
          }
五、
  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;
             server_name   www.test2.com;
             ssl_certificate       ssl.conf/c.com.crt;
             ssl_certificate_key   ssl.conf/c.com.key;
            location / {
                 proxy_pass http://test;
             }
          }