将 http 服务器包装在双 nat 后面的 tls 中

问题描述

我想通过 https 访问 LAN 上的 http 服务器,因为现代浏览器和我已经使用 https 运行的现有站点的组合不断将任何 http 连接提升到 https,即使在 443 以外的端口上也是如此。

>

http 服务器通过无线网桥(linux、dnsmasq、不同子网)连接到我的局域网,我已经设置了端口转发(网桥上的 iptables、ipv4_forward)。

Internet--->site-router:8080--->w/bridge:8080--->httphost:8080
                           LAN_a             LAN_b
                       10.0.0.0/24        10.0.1.0/24
              

我已经在 LAN_a 上运行了一个 :443 https 网站,而 LAN_b 上的 httphost 位于 10.0.1.20。

我见过很多例子,Nginx 可以用作反向代理来隧道 http 流量,但它们似乎都处理运行在同一主机(即 server_b)上的 http 服务。

我目前在无线网桥上的配置如下:

服务器{

listen 8080;
server_name www.example.com;

root   /var/www/html;

ssl_certificate           /etc/Nginx/cert.crt;
ssl_certificate_key       /etc/Nginx/cert.key;

ssl on;
ssl_session_cache  builtin:1000  shared:SSL:10m;
ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;

access_log            /var/log/Nginx/httphost.access.log;

location / {

  proxy_set_header        Host $host;
  proxy_set_header        X-Real-IP $remote_addr;
  proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header        X-Forwarded-Proto https;
  proxy_pass              http://localhost:8080;
  proxy_read_timeout      90;

  proxy_redirect      http://10.0.1.1:8080 https://www.example.com;
}

}

端口转发:

iptables -A PREROUTING -t nat -i wlan0 -p tcp --dport 8080 -j DNAT --to 10.0.1.20:8080
iptables -A FORWARD -p tcp -d 10.0.1.20 --dport 8080 -j ACCEPT

但是我超时了,而且这个配置似乎希望我在网桥上运行 http 服务,这是不正确的;我想要的服务器在 LAN_b 上的 NAT 后面。

我是否使用了错误的反向代理概念,还是配置文件中存在轻微的配置错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)