解决Nginx上代理多个项目,其中一个配置ssl,其他项目如果用https访问,也会跳转到配置ssl的虚拟主机上

本文探讨了一个关于Nginx代理中443端口访问引发的SSL项目冲突问题,通过添加rewrite规则解决了不同项目间https访问的混乱。作者寻求理解背后原理并提供了详细配置和解决步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近遇到了一个奇怪的问题,Nginx上代理多个项目,其中一个配置ssl,其他项目如果用https访问,也会跳转到这个配置了ssl的虚拟主机上。虽然找到了解决方法,但是没有搞清楚是什么原因,明明监听443的server也加了指定的server_name,如果有清晰的大佬,虚心接受指导。

具体的解决方案是,在没有配置ssl的server里,加上rewrite跳转,如果用443访问,自动转到80,代码如下:

server {
    listen   80;
    #关键代码
    listen   443 ssl;
    server_name  test;

    #关键代码
    ssl_certificate    /etc/nginx/cert/server.pem;#这里的pem和key可以随便指定一个,不然会报错
    ssl_certificate_key  /etc/nginx/cert/server.key;

    #关键代码
    if ($server_port ~ 443){
       rewrite ^(/.*)$ http://$host$1 permanent;
    }

    location / {
        proxy_pass http://127.0.0.1:8180;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

添加上关键代码,然后重启nginx就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值