我在一台私有 IP 为 192.168.17.70 的机器上设置了 nginx。它使用自签名证书(此部分正在运行)将来自公共 IP 的 https 请求转发到 192.168.17.29 上的 Web 设备。此设备上的应用程序不支持 SSL。它需要用户名和密码才能登录。
当我访问代理服务器时,它似乎将 https 请求转发到设备,并且我从设备上的 Web 应用程序获得登录对话框。它不接受凭据,而是再次提示我。直接登录到在其私有 IP 地址上运行 nginx 的计算机会给我登录提示并接受凭据,然后正确显示来自设备的内容。
我怀疑问题出在 http 和 https 模式之间的转换,但我似乎陷入了困境。这是我在搜索中尝试了多种解决方案后得到的结果:
upstream backend {
server 192.168.17.29:80;
}
server {
listen 443 ssl http2;
server_name xxx.xxx.xxx.xxx; # my real IP address is here
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
location / {
proxy_pass http://backend;
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_set_header X-Scheme $scheme;
proxy_redirect http:// $scheme://;
}
}
server {
listen 80;
location / {
proxy_pass http://192.168.17.29;
}
}
我是这方面的新手,所以任何帮助我都会很感激。我发布的内容就是按照我描述的方式运行的。
之前我有一个配置,它会接受我的用户名和密码,但不会将非 SSL Web 设备的内容呈现到客户端机器。
谢谢史蒂夫