nginx ssl测试

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共荐】然而这样的配置根本就满足不了公司业务需求,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;
             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;
             }
          }

      #简单,终于交差了,

      #因本人笔记跟公司业务有联系,在更新博客时,上面配置涉及公司信息地方有改动,如上面有错误请指出,难免有漏掉地方。



你可能感兴趣的:(nginx杂谈)