如何在nginx中将https重定向到http

时间:2019-03-25 04:02:24

标签: nginx

我有一个tomcat服务器,当前正在端口8082(http)上运行。我必须在不触摸服务器代码或tomcat配置的情况下创建站点https。我安装了nginx并能够将https重定向到http,但是浏览器仍然显示站点不受保护。我们如何使客户端使用https,然后nginx在内部重定向到http,但是所有调用都是https。

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    server {
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass "http://localhost:8082/app/";
        }
    }

    server {
        listen       443 ssl;
        server_name  localhost;
        ssl_certificate      nginx-selfsigned.crt;
        ssl_certificate_key  nginx-selfsigned.key;
        rewrite ^(.*) http://localhost:8082/app$1 permanent;
    }
}

2 个答案:

答案 0 :(得分:0)

您应该使用Richard所提到的proxy_pass,这样您就不会通过端口8082重定向到后端URL(这就是浏览器直接访问http协议的原因。 您还需要设置防火墙规则以保护对此端口的外部访问

答案 1 :(得分:0)

对于当前配置,只需使用443,然后在此侦听器中使用proxy_pass,就像

一样简单
server {
        listen       443 ssl;
        server_name  localhost;
        ssl_certificate      nginx-selfsigned.crt;
        ssl_certificate_key  nginx-selfsigned.key;

        location / {
            proxy_pass "http://localhost:8082/app/";
        }
 }

您可能会对端口80感到困惑,该端口应重定向到443以确保所有流量都是HTTPS,例如

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

还请注意,这些是我从配置中复制的伪代码,您需要尝试一下并稍后进行更改