使用nginx ssl直通的反向代理
我有几个ISS web服务器,在每个IIS服务器上托管多个web应用程序。 每个系统上都有一个公共证书。 每个IIS都有一个唯一的IP。 所有IIS服务器都放在同一个DMZ中 我已经在另一个DMZ中设置了nginx系统。 我的目标是,让nginx处理来自Internet的所有对IIS的请求,并将所有SSL和证书检查传递给IIS。就像nginx之前一样。我不想让nginx破坏证书,或者卸载证书等等 在我尝试使用nginx反向代理完成之前(因为我对nginx不太熟悉),我的问题是,这是否可能 相信我,我已经在谷歌上搜索了很多次,但都找不到回答我问题的答案 也许我太笨了。我甚至搜索了passthrough,或者反向代理,卸载使用nginx ssl直通的反向代理,nginx,stream,reverse-proxy,nginx-reverse-proxy,pass-through,Nginx,Stream,Reverse Proxy,Nginx Reverse Proxy,Pass Through,我有几个ISS web服务器,在每个IIS服务器上托管多个web应用程序。 每个系统上都有一个公共证书。 每个IIS都有一个唯一的IP。 所有IIS服务器都放在同一个DMZ中 我已经在另一个DMZ中设置了nginx系统。 我的目标是,让nginx处理来自Internet的所有对IIS的请求,并将所有SSL和证书检查传递给IIS。就像nginx之前一样。我不想让nginx破坏证书,或者卸载证书等等 在我尝试使用nginx反向代理完成之前(因为我对nginx不太熟悉),我的问题是,这是否可能 相信我
到目前为止,我已经收集,nginx可能需要一些额外的MOD。由于我有一个“apt-get”安装,我甚至不知道如何添加它们。无论如何,我找到了解决方案: 问题:
ngx\u stream\u ssl\u preread、ngx\u stream\u map和stream
。别担心,它们已经在包裹里了。您可以使用nginx-V
- CD至
/etc/nginx/已启用模块
- vi您选择的文件名(例如passtru) 此文件的内容:
stream {
map $ssl_preread_server_name $name {
webserver01.domain.com webserver01_backend;
webserver02.domain.com webserver02_backend;
}
upstream support_backend {
server 192.168.0.1:443; # or DNS Name
}
upstream intranet_backend {
server 192.168.0.2:443; # or DNS Name
}
log_format basic '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$upstream_addr" '
'"$upstream_bytes_sent" "$upstream_bytes_received"
"$upstream_connect_time"';
access_log /var/log/nginx/access.log basic;
error_log /var/log/nginx/error.log;
server {
listen 443;
proxy_pass $name; # Pass allrequests to the above defined variable container $name
ssl_preread on;
}
}
server {
listen 80;
return 301 https://$host$request_uri;
}
6。取消默认虚拟Web服务器的链接
rm/etc/nginx/sites enabled/default
7。将所有http通信重定向到https:
- 创建一个文件vi/etc/nginx/conf.d/redirect.conf 添加以下代码
stream {
map $ssl_preread_server_name $name {
webserver01.domain.com webserver01_backend;
webserver02.domain.com webserver02_backend;
}
upstream support_backend {
server 192.168.0.1:443; # or DNS Name
}
upstream intranet_backend {
server 192.168.0.2:443; # or DNS Name
}
log_format basic '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$upstream_addr" '
'"$upstream_bytes_sent" "$upstream_bytes_received"
"$upstream_connect_time"';
access_log /var/log/nginx/access.log basic;
error_log /var/log/nginx/error.log;
server {
listen 443;
proxy_pass $name; # Pass allrequests to the above defined variable container $name
ssl_preread on;
}
}
server {
listen 80;
return 301 https://$host$request_uri;
}
nginx-t
systemctl重新加载nginx
/var/log/nginx/access.log