我有多个 ISS Web 服务器,在每个 IIS 服务器上托管多个 Web 应用程序。
每个系统上都有一个公共证书。
每个 IIS 都有一个唯一的 IP。
所有IIS服务器都放置在同一个DMZ中
我在另一个 DMZ 中设置了 nginx 系统。
我的目标是,让 nginx 处理来自 Internet 的所有对 IIS 的请求,并将所有 SSL 和证书检查传递给 IIS。就像在 nginx 之前一样。我不想让 nginx 破坏证书,或者卸载它们等。
在我尝试使用 nginx 反向代理来完成它之前(因为我对 nginx 不太熟悉),我的问题是,这是否可能?
相信我,我已经用谷歌搜索了很多次,但找不到可以回答我的问题的东西
或者也许我太愚蠢了谷歌正确。我什至搜索过直通或反向代理卸载。
到目前为止我收集到的信息是,nginx 可能需要一些额外的 mods。由于我有一个“apt-get”安装,我什至不知道如何添加它们。
没关系,我找到了解决方案:
Issue:
- 多个 Web 服务器,每个服务器上都有各种应用程序,在 FW 后面运行,并且仅在端口 443 上响应
- Web 服务器有一个通配符证书,它们是 IIS Web 服务器(非常勇敢),每个服务器都有公共 IP 地址
- 要求所有网络服务器不应暴露在互联网上并移动到 DMZ
- 由于现在 IP4 地址很短,不可能获得更多的 IP 地址
- Nginx 应该只传递请求。网络服务器和反向代理之间没有证书破解、解密、重新加密等。
解决方案:
- 所有网络服务器应移至内部 DMZ
- 单个 nginx 反向代理应根据网络服务器 DNS 条目处理所有请求并映射它们。这将使公共 IP4 地址需求过时
- 所有网络服务器都会获得私有IP
- 野生证书可以很好地处理 DNS 转发的所有别名。
需要完成的步骤:
1. 单个 nginx RP 应放置在外部 DMZ 上。
2、配置nginx:- 在完全修补的 Debian 上安装 nginxapt-get install nginx
。在此刻
您将获得 nginx 版本 1.14。当然你也可以编译它
- 如果您通过apt-get方式安装了nginx,它将配置以下模块,稍后您将需要这些模块:
ngx_stream_ssl_preread, ngx_stream_map, and stream
。别担心,它们已经在包装中了。您可以检查nginx -V
4.外部DNS配置:- 所有来自互联网的 DNS 请求都应该指向 nginx。
E.g webserver1.domain.com --> nginx
webserver2.domain.com --> nginx
webserver3.domain.com --> nginx
5.配置nginx反向代理
- CD to
/etc/nginx/modules-enabled
- 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;
}
}
6. 取消默认虚拟Web服务器的链接
rm /etc/nginx/sites-enabled/default
7. 将所有 http 流量重定向到 https:
- 创建文件 vi /etc/nginx/conf.d/redirect.conf
添加以下代码
在此处输入代码
server {
listen 80;
return 301 https://$host$request_uri;
}
- test
nginx -t
- reload
systemctl reload nginx
打开浏览器并检查/var/log/nginx/access.log
调用网络服务器时
Finish
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)