在nginx配置部分https

在昨天的文章(配置https实现请求安全)里,我介绍了nginx配置全站的https访问,这样对所有请求都会加密,会减慢响应速度。

在实际的项目中,我们也没有必要对所有请求加密,比如浏览一个帖子列表,查看一个商品信息等等,只需要对一些包含敏感数据的请求加密就可以了。

因此,今天尝试配置了nginx部分的https访问,这里的测试会继续使用到昨天生成的秘钥和证书,对登陆页面进行加密,配置的代码如下:

upstream site{
           server localhost:8081;
           server localhost:8082;
           server localhost:8083;
        }

        server
        {
                listen       9001;
                server_name  localhost;

                index index.jsp index.html;
                root /home/default;
                location ~ .* {
                        proxy_pass http://site;
                        proxy_set_header X-Real-IP $remote_addr;
                }
                location ^~ /test/login.jsp{
                        rewrite ^ https://$server_addr:443$request_uri? permanent;
                }
        }
        server
        {
                listen 443 ssl;
                server_name localhost;
                ssl on;
                ssl_certificate /home/dayuanzi/temp/rsamiyao.csr;
                ssl_certificate_key /home/dayuanzi/temp/rsamiyaonopw.key;
                location / {
                        rewrite ^ http://$server_addr:9001$request_uri? permanent;
                }
                location ^~ /test/login.jsp{
                        proxy_pass http://127.0.0.1:8081;
                        proxy_redirect off;
                        proxy_set_header Host $host;
                        proxy_set_header X-Real-Ip $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_set_header X-Forwarded-Proto $scheme;
                }
        }

部署服务器详情:

三台tomcat:

localhost:8081,localhost:8082,localhost:8083

一台nginx


在上面的配置实现了以下功能:

1、nginx作为一个负载均衡器,除了login.jsp请求,其他请求都会平均分发到其他三个本地服务器

2、http://localhost:9001/test/login.jsp时,会重定向为https://localhost/test/login.jsp,对login.jsp加密

3、https://localhost/test/* 时,会重定向为http://locathost:9001/* ,一般请求不加密

这里简单说一下rewrite语法:rewrite regex replacement [flag];

flag可以有四个取值:
    last : 相当于Apache的[L]标记,表示完成rewrite
    break : 停止执行当前虚拟主机的后续rewrite指令集
    redirect : 返回302临时重定向,地址栏会显示跳转后的地址
    permanent : 返回301永久重定向,地址栏会显示跳转后的地址

另外,测试时,如果是在另一台机器访问,上面rewrite ^ http://$server_addr:9001$request_uri?中,必须要用$server_addr不能用$server_name,否则会重定向到本机


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值