如何更正 'nginx: [emerg] "stream" directive is not allowed here'
How to Correct 'nginx: [emerg] "stream" directive is not allowed here'
问题
为什么下面的Nginx配置return nginx: [emerg] "stream" directive is not allowed here in /etc/nginx/sites-enabled/default:1
?
Nginx 配置...
stream {
map $ssl_preread_server_name $upstream {
example.com 1051;
}
upstream 1051 {
server 127.0.0.1:1051;
}
server {
listen 443;
proxy_pass $upstream;
ssl_preread on;
}
}
版本/构建信息...
OS:Debian 10
这是精简的 nginx -V
输出,确认存在我理解我需要的模块...
nginx version: nginx/1.14.2
TLS SNI support enabled
configure arguments: ... --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module ...
背景
我只有一个静态 IP 地址。在静态 IP 地址上,我正在设置一个反向代理 Nginx 服务器,以将流量转发到各种后端服务。其中一些服务是具有唯一域名的网站。
+-----+ +----------------------+ +---------+
| WAN | <----> | Nginx Reverse Proxy | <----> | Service |
+-----+ +----------------------+ +---------+
启动时,该服务使用 systemd 运行 此端口转发 ssh
命令连接到反向代理:ssh -N -R 1051:localhost:443 tunnel@example.com
(运行良好。)
我希望证书驻留在服务上,而不是反向代理上。据我了解,我需要利用 Nginx 上的 SNI 来传递基于域名的 SSL 连接。但是我无法让 Nginx 反向代理通过 SSL。
资源
以下是我仔细研究过的一些资源...
- https://serverfault.com/questions/625362/can-a-reverse-proxy-use-sni-with-ssl-pass-through
- https://nginx.org/en/docs/stream/ngx_stream_core_module.html
- https://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html
- https://www.amitnepal.com/nginx-ssl-passthrough-reverse-proxy
- https://serverfault.com/questions/1049158/nginx-how-to-combine-ssl-preread-protocol-with-ssl-preread-server-name-ssh-mul
问题是我试图在 http
块中嵌入 stream
块。我没有正确解释 /etc/nginx/nignx.conf
文件中的 include
。
问题
为什么下面的Nginx配置return nginx: [emerg] "stream" directive is not allowed here in /etc/nginx/sites-enabled/default:1
?
Nginx 配置...
stream {
map $ssl_preread_server_name $upstream {
example.com 1051;
}
upstream 1051 {
server 127.0.0.1:1051;
}
server {
listen 443;
proxy_pass $upstream;
ssl_preread on;
}
}
版本/构建信息...
OS:Debian 10
这是精简的 nginx -V
输出,确认存在我理解我需要的模块...
nginx version: nginx/1.14.2
TLS SNI support enabled
configure arguments: ... --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module ...
背景
我只有一个静态 IP 地址。在静态 IP 地址上,我正在设置一个反向代理 Nginx 服务器,以将流量转发到各种后端服务。其中一些服务是具有唯一域名的网站。
+-----+ +----------------------+ +---------+
| WAN | <----> | Nginx Reverse Proxy | <----> | Service |
+-----+ +----------------------+ +---------+
启动时,该服务使用 systemd 运行 此端口转发 ssh
命令连接到反向代理:ssh -N -R 1051:localhost:443 tunnel@example.com
(运行良好。)
我希望证书驻留在服务上,而不是反向代理上。据我了解,我需要利用 Nginx 上的 SNI 来传递基于域名的 SSL 连接。但是我无法让 Nginx 反向代理通过 SSL。
资源
以下是我仔细研究过的一些资源...
- https://serverfault.com/questions/625362/can-a-reverse-proxy-use-sni-with-ssl-pass-through
- https://nginx.org/en/docs/stream/ngx_stream_core_module.html
- https://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html
- https://www.amitnepal.com/nginx-ssl-passthrough-reverse-proxy
- https://serverfault.com/questions/1049158/nginx-how-to-combine-ssl-preread-protocol-with-ssl-preread-server-name-ssh-mul
问题是我试图在 http
块中嵌入 stream
块。我没有正确解释 /etc/nginx/nignx.conf
文件中的 include
。