Nginx 重定向 https->http(反向代理)->端口(docker容器)
Nginx redirect https->http(reverse proxy)->port(docker container)
上下文
设置简单
- 一个 docker 容器将 8090 暴露为一个网站(节点,快递)
- 一个 nginx conf 公开 80 并将其映射到本地主机 8090
问题
我没有付费的 SSL 证书,我希望尝试访问 https 的最终用户被重定向到 http。
我试过重定向、重写,下面是一个简单的监听……但没有成功。浏览器会 return '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 permanent;
}
使用 letsencrypt 获取免费证书,然后使用 https 或重定向到 http 是我的解决方案。
感谢@RichardSmith
您可以通过ngx_stream_core_module尝试使用TCP restreaming
http://nginx.org/en/docs/stream/ngx_stream_core_module.html
stream {
server {
listen 443;
proxy_pass 127.0.0.1:80;
}
}
上下文
设置简单
- 一个 docker 容器将 8090 暴露为一个网站(节点,快递)
- 一个 nginx conf 公开 80 并将其映射到本地主机 8090
问题
我没有付费的 SSL 证书,我希望尝试访问 https 的最终用户被重定向到 http。
我试过重定向、重写,下面是一个简单的监听……但没有成功。浏览器会 return '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 permanent;
}
使用 letsencrypt 获取免费证书,然后使用 https 或重定向到 http 是我的解决方案。
感谢@RichardSmith
您可以通过ngx_stream_core_module尝试使用TCP restreaming http://nginx.org/en/docs/stream/ngx_stream_core_module.html
stream {
server {
listen 443;
proxy_pass 127.0.0.1:80;
}
}