Nginx重定向https-> http(反向代理)->端口(docker容器)

时间:2019-02-08 23:21:44

标签: docker nginx nginx-reverse-proxy

上下文

简单设置

  • 一个将8090暴露为网站的docker容器(节点,快速)
  • 暴露80的nginx conf并将其映射到localhost 8090

问题

我没有支付SSL证书,我希望尝试访问https的最终用户重定向到http。

我尝试了重定向,重写,并在下面进行了简单的监听..没有成功。浏览器将返回“ ERR_SSL_PROTOCOL_ERROR”。

server {
    listen 80;
    listen 443;
    ssl off;
    server_name xxxx.com;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         "http://0.0.0.0:8090";
    }
 }

问题

能否请您提出重定向HTTPS-> http(反向代理)的最简洁方法?问候

编辑1

以下配置导致浏览器“ ERR_SSL_PROTOCOL_ERROR”。

server {
    listen 80;

    server_name xxxx.com;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         "http://0.0.0.0:8090";
    }
 }


server {
       listen 443;
       server_name xxxx.com;
       rewrite ^(.*) http://$host$1 permanent;
 }

2 个答案:

答案 0 :(得分:1)

使用letencrypt获取免费证书,然后使用https或重定向到http是我的解决方案。

@RichardSmith的积分

答案 1 :(得分:0)

您可以尝试通过ngx_stream_core_module使用TCP重播 http://nginx.org/en/docs/stream/ngx_stream_core_module.html

stream {
    server {
        listen 443;
        proxy_pass 127.0.0.1:80;
    }
}