gpt4 book ai didi

nginx - 使用 nginx ssl 直通的反向代理

转载 作者:行者123 更新时间:2023-12-04 15:36:22 27 4
gpt4 key购买 nike

我有几个 ISS Web 服务器在每个 IIS 服务器上托管多个 Web 应用程序。每个系统上都有一个公共(public)证书。每个 IIS 都有一个唯一的 IP。所有IIS Server都放在同一个DMZ中

我在另一个 DMZ 中设置了一个 nginx 系统。我的目标是让 nginx 处理所有从 Internet 到 IIS 的请求,并将所有 SSL 和证书检查传递给 IIS。就像在 nginx 之前一样。我不想让 nginx 分解证书,或卸载它们等。

在我尝试使用 nginx 反向代理来完成它之前(因为我对 nginx 不是很熟悉),我的问题是,这是否可能?

相信我,我用谷歌搜索了很多次,但找不到能回答我问题的东西或者也许我谷歌太笨了。我什至搜索过直通或反向代理、卸载。

到目前为止我已经收集到,nginx 可能需要一些额外的模组。由于我有一个“apt-get”安装,我什至不知道如何添加它们。

最佳答案

没关系,我找到了解决方案:

问题:

  1. 多个 Web 服务器在每个服务器上都有各种应用程序,它们在 FW 后面运行并且仅在端口 443 上响应
  2. Web 服务器有一个通配符证书,它们是 IIS Web 服务器(哇哦,非常勇敢),每个服务器都有公共(public) IP 地址
  3. 要求所有网络服务器都不应暴露在互联网上并移至 DMZ
  4. 由于现在 IP4 地址很短,不可能获得更多的 IP 地址
  5. Nginx 应该只传递请求。网络服务器和反向代理之间没有证书中断、解密、重新加密等。

解决方法:

  1. 所有网络服务器都应移至内部 DMZ
  2. 单个 nginx 反向代理应根据网络服务器 DNS 条目处理所有请求并映射它们。这将使公共(public) IP4 地址需求过时
  3. 所有网络服务器都将获得私有(private) IP
  4. 野生证书可以很好地处理 DNS 转发的所有别名。

需要完成的步骤:

<强>1。单个 nginx RP 应放置在外部 DMZ 上。

<强>2。配置 nginx: - 使用 apt-get install nginx 在打完补丁的 debian 上安装 nginx。在此刻 您将获得 nginx 的 1.14 版。当然你也可以自己编译

  1. 如果您通过 apt-get 方式安装了 nginx,它将配置以下模块,您稍后将需要这些模块:ngx_stream_ssl_preread、ngx_stream_map 和 stream。别担心,它们已经在包裹里了。您可以使用 nginx -V
  2. 检查

<强>4。外部 DNS 配置: - 所有来自互联网的 DNS 请求都应该指向 nginx。

E.g   webserver1.domain.com --> nginx
webserver2.domain.com --> nginx
webserver3.domain.com --> nginx

<强>5。配置nginx反向代理

  • CD 到 /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.取消链接默认的虚拟网络服务器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;

}
  1. 测试 nginx -t
  2. 重新加载 systemctl 重新加载 nginx
  3. 打开浏览器并在调用网络服务器时检查/var/log/nginx/access.log

  4. 完成

关于nginx - 使用 nginx ssl 直通的反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59624481/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com