基于Nginx实现将HTTPS转HTTP访问

我们现在后台有一个HTTPS服务https://halo.wanna1314y.top:12345,我现在想要通过http://wanna1314y.top:8090去访问该服务。 如果只是单纯的反向代理的话,会出现SSL证书的问题,因为我们访问wanna1314y.top:8090用的是HTTP协

我们现在后台有一个HTTPS服务https://halo.wanna1314y.top:12345,我现在想要通过http://wanna1314y.top:8090去访问该服务。

如果只是单纯的反向代理的话,会出现SSL证书的问题,因为我们访问wanna1314y.top:8090用的是HTTP协议,但是halo.wanna1314y.top:31889是需要HTTPS的协议进行访问的。那么我们需要才能去实现这个功能?

注意:通过sudo vim /etc/nginx/sites-available/default可以去编辑Nginx的配置文件。

第一种方案,我们通过Nginx的配置proxy_ssl_verify off;配置Nginx对于代理请求不进行SSL的检验,但是存在有不安全的问题。

server {
    listen 8090;
    listen 3443 ssl;

    ssl_certificate /root/ssl/wanna1314y.top_bundle.crt;
    ssl_certificate_key /root/ssl/wanna1314y.top.key;

    location / {
        proxy_pass https://halo.wanna1314y.top:12345;
        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;
        proxy_ssl_verify off;
    }
}

第二种方案,将HTTP的8090端口,重定向到3443端口,3443其实是我们真正的https://halo.wanna1314y.top:12345服务,这样也可以实现我们想要的功能,8090可以通过HTTP端口进行访问。

server {
    listen 8090;
    server_name wanna1314y.top;

    location / {
        return 301 https://$host:3443$request_uri;
    }
}

server {
    listen 3443 ssl;
    server_name wanna1314y.top;

    ssl_certificate /root/ssl/wanna1314y.top_bundle.crt;
    ssl_certificate_key /root/ssl/wanna1314y.top.key;

    location / {
        proxy_pass https://halo.wanna1314y.top:12345;
        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;
    }
}
Comment