Nginx代理https强制http跳转https

最近碰到个需求,原来用http访问,由于被第三方植入广告;因此要将http变成https访问,若是用户用http访问先跳转到https,而后通过Nginx代理后以http的形式访问原来的程序,这样就不须要更改任何的代码了 ;html

在配置过程遇到几个小问题,通过多方查询,借鉴不少大佬的宝贵经验,最后得以一一解决;nginx

第一个问题:首先查看是否开启ssl模块:(若是未开通:启动nginx的可能会报错  nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf)浏览器

1 、切换到源码包:session

        cd /usr/local/nginx/nginx-1.13.9ui

二、查看已安装的Nginx的已有模板:.net

         /usr/local/nginx/sbin/nginx -V线程

            个人查询结果是:configure arguments:  --prefix=/usr/local/nginx    (没有任何模板,我是新安装的Nginx)代理

三、执行命令:./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_moduleserver

       会加载一系列的配置信息htm

四、完成后   make

五、而后备份原有已安装好的nginx

     cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

六、而后结束Nginx线程;

七、而后将刚刚编译好的nginx覆盖掉原有的nginx(这个时候nginx要中止状态)

           cp ./objs/nginx /usr/local/nginx/sbin/

八、最后查看一次配置

     /usr/local/nginx/sbin/nginx -V

个人变成了

  

第一个问题:关于没有ssl模板问题解决;

第二个问题:生成OPenssl生成证书  能够参考  https://blog.csdn.net/danfengw/article/details/62218937

//key的生成 , 建立私钥

一、openssl genrsa -des3 -out huai.key 2048

//csr的生成方法须要依次输入国家,地区,组织,email。最重要的是有一个common name,能够写你的名字或者域名。若是为了https申请,这个必须和域名吻合,不然会引起浏览器警报。

二、openssl req -new -key danfeng.key -out huai.csr

//下面的步骤是客户端的端私钥的生成和服务端证书的生成

三、openssl rsa -in danfeng.key -out huai_nopass.key

//自签署证书

四、openssl req -new -x509 -days 3650 -key huai_nopass.key -out huai.crt

找到conf文件夹,将openssl生成的 文件放到和conf同级目录下

第三个问题  :配置Nginx.conf文件

server {
        # listen       80;
        listen       443 ssl;
        server_name  localhost;

        # ssl                  on;
        ssl_certificate      danfeng.crt;
        ssl_certificate_key  danfeng_nopass.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
          location / {
           # root   html;
           # index  50x.html index.htm;
            proxy_redirect off;
            proxy_set_header Host 192.168.1.220;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://192.168.1.220:8090;
                   }
         }

    server {
           listen       80;
           server_name  localhost;(域名)
           rewrite ^(.*)$ https://$host$1 permanent;
        }

 

结果:

结果:用http://192.168.1.226/quickpay-admin/login.html   跳转到下面

由于解决问题查询了不少的博客

https://blog.csdn.net/danfengw/article/details/62218937

https://www.v2ex.com/t/305568

http://www.javashuo.com/article/p-hkihflli-ec.html

借鉴了不少东西;若有侵权,请联系删除;