nginx 反向代理作为单一入口点

nginx 反向代理作为单一入口点

我想使用 nginx 反向代理配置作为我的家庭网络的单一入口点。

如果我连接到根站点https://我的名字/使用基本身份验证检查用户和密码。接下来显示一个简单的 html 表,其中包含指向我的内部服务器/系统的链接,例如:

href="/esxi"
href="/openmediavault"
href="/emby"

我尝试过类似这样的地点

location /esxi/ {
    auth_basic "Restricted Content ESXi";
    auth_basic_user_file /etc/nginx/.htpasswd;

    proxy_pass https://x.x.x.x:yyyy/;
    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 $scheme;
}

location / {
    root /var/www/html;
    index index.html;
    try_files $uri /index.html;
}

但这不起作用。始终显示带有表格的默认站点。ESXI 站点的路径从 /esxi 更改为 /ui,但不显示 ESXI 站点。

我如何设置 nginx 来代理 /location 到内部服务器?

答案1

您缺少proxy_redirectESXi Web 界面,所以发生了什么 - 您的 ESX 返回重定向到新页面,并且您的浏览器从 nginx 请求它,但 nginx 不知道从哪里获取它,因为它与位置不匹配。我建议从以下方法开始

proxy_redirect https://x.x.x.x:yyyy/ui/ https://x.x.x.x:yyyy/esx/ui/;

但这需要进一步的测试和改进。

或者,您可以使用更简单的方法,并为 ESXi Web 界面返回的每个模式添加指向它的位置proxy_pass。这确实更简单,但不太优雅和熟练。

相关内容