Nginx代理https强制http跳转https

最近碰到个需求,原来用http访问,因为被第三方植入广告;所以要将http变成https访问,如果用户用http访问先跳转到https,然后经过Nginx代理后以http的形式访问原来的程序,这样就不需要更改任何的代码了 ;

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

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

1 、切换到源码包:

        cd /usr/local/nginx/nginx-1.13.9

2、查看已安装的Nginx的已有模板:

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

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

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

       会加载一系列的配置信息

4、完成后   make

5、然后备份原有已安装好的nginx

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

6、然后结束Nginx线程;

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

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

8、最后查看一次配置

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

我的变成了

  

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

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

//key的生成 , 创建私钥

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

//csr的生成方法需要依次输入国家,地区,组织,email。最重要的是有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。

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

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

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

//自签署证书

4、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

https://www.cnblogs.com/kevingrace/p/6187072.html

借鉴了很多东西;如有侵权,请联系删除;

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值